我想創建一個只能爲Serializable類運行的擴展。 是否有這樣的代碼:C#通用方法作爲擴展與where子句
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.動態運行時檢查爲什麼'這個對象obj'而不是'this T obj'? – Carsten
只能使用反射來檢查屬性。該類實際上並未實現該屬性。 – Aphelion
@Aphelion,有沒有辦法檢查where子句? – uzay95