我们可以为应用于该类的所有实例的类定义属性吗?

时间:2013-12-12 00:06:38

标签: c# attributes

我想创建一个在序列化过程中始终被忽略的类。通常,您可以告诉序列化程序使用[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> { ... }

0 个答案:

没有答案