是否可以获取类属性?C#
我有一个使用泛型的类。此类执行一些需要序列化的操作。因此,将提供给myClass的类必须包含属性[Serializable()]。是否可以请求一个类,该类包含哪些属性?在设计时的最佳情况下是否可以获取类属性?C#,c#,C#,我有一个使用泛型的类。此类执行一些需要序列化的操作。因此,将提供给myClass的类必须包含属性[Serializable()]。是否可以请求一个类,该类包含哪些属性?在设计时的最佳情况下 [Serializable()] public class clsSchnappschuss<T> { //Some operations which need serialization } [Serializable()] 公共类clsSchnap
[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
的任何其他代码之前执行一次。您是否检查了?可能的重复项?我正准备写这篇文章。