리플렉션을 통해 제네릭 매개 변수의 일반 형식을 가져와야합니다. 그러나 진짜 유형은 아니고 유형 {Name = "T"; 하면 FullName = NULL}리플렉션을 통해 일반 매개 변수의 형식을 얻는 방법
public void Sample<T>(T i, object o)
{
MethodBase basee = MethodBase.GetCurrentMethod();
Type[] types = basee.GetGenericArguments();
}
하지만 난 반사
을 사용하고 있기 때문에 내가의 typeof (T)를 사용할 수 없습니다 제네릭 인수 형식 유형을 얻기 위해 (반사를 사용하는) 방법이 있나요. 다른 칼로리에서
// in this case i should get (Type) { Name="Int32" ; FullName="System.Int32" }
myClassObj.Sample(10, new object());
, 난 대해서 typeof에 의해 호출 된 메소드를 호출하는 방법을 알고 whant (T) 예 :
// in Il code I see that the compiler use:
// ldtoken !!T => this should get the RuntimeTypeHandle needed as parameter
// System.Type::GetTypeFromHandle(valuetype System.RuntimeTypeHandle)
Type t = Type.GetTypeFromHandle(? ? ?);
나는 T 일반적인 인수에서 RuntimTypeHandle을 얻을 수있는 방법
왜 'i.GetType()'을 사용할 수 없습니까? 그렇다면 왜 typeof (T)를 사용할 수 없습니까? 그건 int라고 말해 줄거야. – aquinas
값이 null 일 수 있으며 충돌이 발생할 수 있습니다 ... : S –
충분합니다. 그러나 왜 typeof (T)가 아닌가? – aquinas