在通用类中动态定义DataContract和DataMember

时间:2016-02-10 23:45:08

标签: c# class generics serialization attr

我想在C#中创建一个泛型类,并根据构造函数中使用的泛型类型参数,通过动态定义其[DataContract][DataMember]属性来控制它的序列化方式。

有没有办法这样做?我们可以使用泛型类构造函数中的反射在运行时定义这些属性吗?

1 个答案:

答案 0 :(得分:3)

不,这是不可能的。属性在编译时静态声明,不能在运行时引入。它们是程序集元数据的一部分。

附注:在纯自定义方案中,您可以控制属性的使用者,可以创建自定义属性存储库,而不是直接使用反射。但是,DataContractSerializer不是这种情况。