【发布时间】:2012-12-08 22:43:24
【问题描述】:
我想创建一个只能为 Serializable 类运行的扩展。 有没有这样的代码:
using System;
namespace ConsoleApplication2
{
[Serializable]
public class Ser
{
}
public class NonSer
{
}
public static class Extension
{
static public T f_DeepClone<T>(this T obj)
where T : (SerializableAttribute)
{
return (T) obj;
}
}
public class Program
{
static void Main(string[] args)
{
Ser mc = new Ser();
mc.f_DeepClone<Ser>();
NonSer mc1 = new NonSer();
mc.f_DeepClone<NonSer>();
}
}
}
【问题讨论】:
-
AFAIK 您无法静态检查属性 - 因此请尝试使用 ISerializable 或在代码 bzw 中进行动态运行时检查。为什么是
this object obj而不是this T obj? -
只能通过反射检查属性。该类实际上并未实现该属性。
-
@Aphelion,在where子句中没有办法检查?
标签: c# generics serialization deserialization serializableattribute