什么是属性的替代品?

时间:2011-02-05 14:20:47

标签: c# reflection attributes annotations

属性帮助我们使用类依赖值而不是实例,它们帮助我们携带一些值而不与我们的类有很强的关系。但我发现了一些属性限制。我们无法在运行时更改这些值。所以我正在寻找一种方法来使用类似的属性概念,因为我们已经看到许多示例配置类由流畅的apis而不是属性。你知道这样一个现成的图书馆吗?使用属性概念避免属性限制的替代方法是什么?

3 个答案:

答案 0 :(得分:3)

实际上在某些情况下,可以在运行时调整属性 - 例如通过TypeDescriptor - 但这只会影响ComponentModel的使用,而不会影响反射的使用。您还可以编写属性本身来执行诸如用于i18n目的的resx查找之类的内容。

但其他选择:

  • 可能是静态属性,可能遵循命名约定
  • 一个单独的对象模型,它讨论了类型 - 元模型,可以这么说
  • 配置文件或类似文件

任何都可行;哪个最好取决于你的想法。

答案 1 :(得分:0)

插件架构中对属性的良好替换可能是使用智能命名约定。

答案 2 :(得分:0)

也许我错过了一些东西,但是你不能只用你的自定义属性添加带有公共设置器的属性吗?我只是在使用属性的实现上尝试了这个,并且我能够在运行时更改此属性而没有任何问题。

您想要更改哪些值?