public MyClass(object obj)
{
}
:
public MyClass(? obj)
{
}
어떻게 C#으로
이public MyClass(object obj)
{
}
:
public MyClass(? obj)
{
}
어떻게 C#으로
이내 마음에 오는 첫번째 것은 ISerializable
인터페이스를 구현하는 객체 만 허용함으로써이 문제를 단순화하는 것이라고 할 수 있습니다 :
public MyClass(ISerializable obj)
{
// ...
}
하지만 너무 단순하다고 생각하지 않습니까?
또는 :
public MyClass(Object obj)
{
if (!Attribute.IsDefined(obj.GetType(), typeof(SerializableAttribute)))
throw new ArgumentException("The object must have the Serializable attribute.","obj");
// ...
}
내가 당신도 사용하여 확인할 수 있다고 생각 :
obj.GetType().IsSerializable;
'obj.GetType()'_is_ Reflection. –
Err 나는 Attribute.IsDefined <_ <0125를 사용하지 않고 의미합니다. <_ < –
그러나 제 목표는 컴파일시 제한하는 것이 었습니다. – Vahid
는 확실합니까? 그 [Serializable] 물건은 꽤 오래되었습니다, 우리는 지금 더 나은 방법이 있습니다. –
짧은 대답 :이 컴파일 시간을 수행 할 수 없습니다. 리플렉션을 사용하고 런타임시 예외를 throw합니다. –
@HenkHolterman 좀 더 구체적으로 말씀해 주시겠습니까? – Vahid