我有一些内置属性的集合(比如System.Runtime.Serialization.SerializableAttribute)我想要应用于某个类的集合
是否可以将这些属性合二为一?我不想明确地将它们全部应用到我的所有类中(attibute集合可能在开发过程中发生变化)
我想要的是一个属性,例如
public class MyClassAttribute: System.Attribute { ... }
我可以轻松地申请我的班级
[MyClass]
public class SampleClass { ... }
这会导致SampleClass具有Serializable属性和其他属性。感谢
答案 0 :(得分:8)
不,基本上不是。实际上,[Serializable]
特别值得注意,因为它在编译器中有不同的处理方式 - 它不是作为属性编写的,而是作为原始标记写入(运行时只是在你问“它是否具有[Serializable]
属性“ - 它会根据类型检查标志,并返回您期望看到的内容,即使这不是事实。”
答案 1 :(得分:0)
我不认为它可以开箱即用,但您可以使用Mono.Cecil在构建后步骤中修改程序集中的类型,删除集合属性并添加其他属性。
答案 2 :(得分:0)
有趣的问题。我认为很多内置属性都是密封的,所以这可能是不可能的。