选项来获得一个名字值字典

问题描述:

类的属性使用.NET 4.6:选项来获得一个名字值字典

我找得到选项的属性的名称值集合字典在给定的类。一个明显的选择是反思。但是,早在.NET 2.0的时候,反思的使用就被认为是性能上的重头戏,并且不推荐使用。

我们在.NET 4.6中有哪些更好的选择?

实体框架中是否有任何功能可以更容易地实现此需求?

更新1

我建立一个邮件合并风格模板系统,我与属性的值更换标签,如{}属性名。

一些数据来自EF实体类,一些来自POCO分类。

+0

这更接近查询在标准ADO.net中的工作方式。你需要使用像Entity Framework这样的ORM吗?因为看起来你正在努力解决EF的存在问题,因为它首先会避免它。 – recursive

+1

你试图解决什么问题? –

+0

如果您需要在运行时获取属性列表,那是什么反射*为*。如果你可以在编译时生成列表,那将会更快。但真的,使用反射并不是一个很大的性能问题 - 不是你已经定义了性能限制,所以谁知道它是否快得“足够”。 – Blorgbeard

所以不管怎么样,你都会使用反射。

我建议在模板系统加载时缓存模型类型的结构。这将加速模板处理。但说实话,除非你一次处理数十万个模板,否则你可能不会从缓存中获得显着的速度提升(你应该测试一下)。

我已经使用并强烈推荐的另一种选择是RazorEngine。它是一个基于ASP.NET的剃刀模板引擎的已经构建的模板引擎。

+0

谢谢你的帮助。你指的是https://github.com/Antaris/RazorEngine吗?您是否发现它足够稳定,可用于具有大量数据呈现的关键任务Windows服务应用程序? –

+0

我无法提出任何建议。简单地给你选择。您必须自己决定是否适合您的项目。 –