가능한 중복 :
Can I declare a variable of Type<T> without specifying T at compile time?컴파일시 T를 지정하지 않고 Type <T>의 변수를 선언 할 수 있습니까?
목표 : 클래스 "MyContent"동적으로로드합니다. 1 인터페이스 <T>
, 1 추상 일반 class<T>
있습니다.
코드 :
public interface IMyObjectInterface{
}
public abstract MyAbstractObject : IMyObjectInterface{
}
public class MyObject : MyAbstractObject{
}
public interface IMyContentInterface<T> where T : MyAbstractObject
{
T MyMethod();
void MyMethod2(T);
}
public abstract MyAbstractContent<T>, IMyContentInterface<T> where T : MyAbstractObject
{
public abstract T MyMethod();
public abstract void MyMethod2(T);
}
public class MyContent : MyAbstractContent<MyObject>
{
public override MyObject MyMethod() { //do something with MyObject }
public override void MyMethod2(MyObject) { //do something with MyObject }
}
지금, 우리는로드 :
IMyObjectInterface obj = (IMyObjectInterface)Assembly.Load("MyAssembly").CreateInstance("MyObject");
IMyContentInterface<???> content = (IMyContentInterface<???>)Assembly.Load("MyAssembly").CreateInstance("MyContent");
content.MyMethod();
어떻게로드 ???
다른 질문에 대한 답변을 읽었습니까? http://stackoverflow.com/questions/2067827/can-i-declare-a-variable-of-typet-without-specifying-t-at-compile-time – Joel
@Fabio - 죄송합니다. 내 원래 대답이 불투명했습니다. ,하지만 C#에서는 이것을 할 수 없습니다. 'T'를 미리 모르는 경우 멤버에게 직접 액세스 할 수 없으며 'T'를 참조하는 일반 변수를 만들 수 없습니다. –
이것은 여러 번 요청되었습니다 : http://stackoverflow.com/questions/2007142/generic-class-members-in-c – JonH