我有一个模型需要保存到 MongoDB 集合中。要获取集合名称,我有两个选择。
1) 属性
我用自定义属性装饰该类,并使用反射来访问其中的值。然后我可以使用 type
缓存它以避免将来查找。
[MongoCollection("Foo")]
public class Foo
{
}
2) 静态属性
这里我在类中有一个包含集合名称的静态属性。
public class Foo
{
public static string CollectionName { get { return "Foo"; } }
}
我发现我倾向于选择前者,因为它看起来和感觉更干净,但这里的一些高级开发人员对反射的使用嗤之以鼻。
第一个选项是否有道理,还是选择第二个选项更好?
最佳答案
这是元数据与数据的一个明显案例:
- 选项 1:属性应该保存有关它们所附加到的实体的元数据。
- 选项 2:成员字段和属性,无论是实例还是静态,都应该保存构成类整体值的数据。
因此,选项 1(属性)是表示元数据的正确方法。反射的使用只是一个技术问题,可以封装到一个单独的类中,例如一个 AttributeManager,它将简化对元数据的访问并适当缓存它们以避免性能开销(这在特定情况下应该是一个问题)。
关于c# - 属性与静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37790195/