C#属性集合

时间:2013-07-08 11:19:19

标签: c# .net attributes

我有一些内置属性的集合(比如System.Runtime.Serialization.SerializableAttribute)我想要应用于某个类的集合

是否可以将这些属性合二为一?我不想明确地将它们全部应用到我的所有类中(attibute集合可能在开发过程中发生变化)

我想要的是一个属性,例如

public class MyClassAttribute: System.Attribute { ... }

我可以轻松地申请我的班级

[MyClass]
public class SampleClass { ... }

这会导致SampleClass具有Seri​​alizable属性和其他属性。感谢

3 个答案:

答案 0 :(得分:8)

不,基本上不是。实际上,[Serializable] 特别值得注意,因为它在编译器中有不同的处理方式 - 它不是作为属性编写的,而是作为原始标记写入(运行时只是在你问“它是否具有[Serializable]属性“ - 它会根据类型检查标志,并返回您期望看到的内容,即使这不是事实。”

答案 1 :(得分:0)

我不认为它可以开箱即用,但您可以使用Mono.Cecil在构建后步骤中修改程序集中的类型,删除集合属性并添加其他属性。

答案 2 :(得分:0)

有趣的问题。我认为很多内置属性都是密封的,所以这可能是不可能的。