我想创建一个在序列化过程中始终被忽略的类。通常,您可以告诉序列化程序使用[IgnoreDataMember()]
属性忽略某个属性,但我想设置该类本身,以便在没有该属性的情况下使用它是不可能的。
例如,而不是具有以下内容:
internal class MyInternalClass<T> { ... }
public class Dog : Animal {
public string Name { get; set; }
[IgnoreDataMember()]
public MyInternalClass<int> Walks { get; set; }
}
public class Cat : Animal {
public string Name { get; set; }
[IgnoreDataMember()]
public MyInternalClass<double> Pats { get; set; }
}
public class Bird : Animal {
public string Name { get; set; }
//I don't have any MyInternalClass instances
}
//... + a dozen other classes with or without one of those properties
我可以简单地拥有
[IgnoreDataMember()]
internal class MyInternalClass<T> { ... }
public class Dog : Animal {
public string Name { get; set; }
public MyInternalClass<int> Walks { get; set; }
}
public class Cat : Animal {
public string Name { get; set; }
public MyInternalClass<double> Pets { get; set; }
}
public class Bird : Animal {
public string Name { get; set; }
//I don't have any MyInternalClass instances
}
//...
该属性将自动应用于所有实例。
上述功能当然不起作用,因为IgnoreDataMemberAttribute
是属性属性,而不是类属性。有没有办法解决这个问题(可能有一个类属性可以将一些属性应用于所有属性实例?例如:
[AutoPropertyAttribute( typeof(IgnoreDataMemberAttribute), attribParams: null )]
internal class MyInternalClass<T> { ... }