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>();
}
}
}
정적 속성을 확인 할 수 - 그래서 하나를 ISerializable을 사용하여 시도하거나 코드 bzw.에서 동적 런타임 검사를 할 왜이 'obj'대신 'this object obj'를 사용해야할까요? – Carsten
속성은 리플렉션을 통해서만 확인할 수 있습니다. 클래스는 실제로 속성을 구현하지 않습니다. – Aphelion
@Aphelion, Where 절을 체크인 할 방법이 없습니까? – uzay95