是否可以获取类属性?C#

是否可以获取类属性?C#,c#,C#,我有一个使用泛型的类。此类执行一些需要序列化的操作。因此,将提供给myClass的类必须包含属性[Serializable()]。是否可以请求一个类,该类包含哪些属性?在设计时的最佳情况下 [Serializable()] public class clsSchnappschuss<T> { //Some operations which need serialization } [Serializable()] 公共类clsSchnap

我有一个使用泛型的类。此类执行一些需要序列化的操作。因此,将提供给myClass的类必须包含属性[Serializable()]。是否可以请求一个类,该类包含哪些属性?在设计时的最佳情况下

    [Serializable()]
    public class clsSchnappschuss<T>
    {
      //Some operations which need serialization
    }
[Serializable()]
公共类clsSchnappschuss
{
//一些需要序列化的操作
}
因此,如果有人使用clsSchnappschuss,他必须给出数据类型(T),我想请求T实现[Serializable()]。这可能吗


关于

如果给定的类实现了ISerializable接口,您可以:

public class clsSchnappschuss<T> where T : ISerializable
公共类clsSchnappschuss,其中T:ISerializable

您不能静态地(即在编译时)请求属性的存在,但在代码中您可以检查泛型类型,就像它是实际的类型名一样。例如,您可以请求其
typeof
,并从中提取属性:

public class clsSchnappschuss<T> {
    static clsSchnappschuss() {
        if (Attribute.GetCustomAttribute(typeof(T), typeof(SerializableAttribute)) == null) {
            throw new InvalidOperationException(typeof(T).FullName +" is not serializable.");
        }
    }
}
公共类clsSchnappschuss{
静态clsSchnappschuss(){
if(Attribute.GetCustomAttribute(typeof(T),typeof(SerializableAttribute))==null){
抛出新的InvalidOperationException(typeof(T).FullName+“不可序列化”);
}
}
}

请注意,我将检查放在一个静态构造函数中。这将在对每种特定类型使用
clsSchnappschuss
的任何其他代码之前执行一次。

您是否检查了?可能的重复项?我正准备写这篇文章。