저는 각각의 파생 된 구체적인 클래스가 아닌 추상적 인 기본 클래스에서 게으르다가 구현하려고합니다. 나는 한 방향으로 던져 봤지만 다른 쪽은 던질 수 없다. 나는 그것이 가능하지 않을 수도 있지만, 포기하기 전에 집단적 마음을 골라 내고 싶다고 생각한다 :일반 추상 클래스에서 캐스트 연산자를 구현하십시오.
public interface IValueType<T>
{
T Value{ get; set; }
}
public abstract class ValueType<T> : IValueType<T> {
public abstract T Value { get; set; }
public static explicit operator T(ValueType<T> vt) {
if(vt == null)
return default(T);
return vt.Value;
}
public static implicit operator ValueType<T>(T val) {
ValueType<T> vt = new ValueType<T>(); //<--- obviously this won't work as its abstract
vt.Value = val;
return vt;
}
}
부분은 반영이 할 수 있다고 생각하지만, 나 대부분을 말한다 파생 된 클래스에서 그것을하는 것이 더 합리적입니다. 왜냐하면 개별 파생 된 클래스가 T에서 작업하는 방법을 알기 위해서이기 때문에, T의 작업이 아니라 그는 추상적 인 수업. –
사실, 나는 정적 인 방법이고, 필요한 인스턴스 방법이 무엇인지 생각하고 있었기 때문에, 당신이 반영으로도 그것을 할 수 있다고 생각하지 않습니다. –
@Matt Ellen 필자는 구체적인 클래스에서 그것을하는 것이 더 낫다는 것에 동의하지만, 수십 개의 파생 클래스에 복사하는 것이 아니라 한 번 작성하는 것이 좋습니다. –