2010-03-16 5 views
2

그래서 같은 종류의 클래스이다 일반적인 매개 변수 T 허용하는 기능이 있습니다.NET 일반 콜 <T>

public Func<T, bool> MyMethod<T>(string paramName, object value) where T : class 

그러나 함수를 호출 할 때 I가 필요로하는 클래스에 직접 액세스 할 필요는 없습니다 매개 변수가됩니다.

MyMethod<foo>("foo1", "foo2") 

내가 기능을 사용할 수 있도록 반사와 같은 다른 수단을 통해 클래스 foo을 얻을 수있는 방법이 있나요?

UPDATE :

매개 변수 값이 나는 통과 ... 그래서 내가 객체가 필요 그 이유는 즉, T 값이 이해가되지 않습니다 값과 같은 경우 특히이 방법은 LINQ와 검사를 통해 람다 식을 수행 유형. 또한 내 진짜 문제는 내가 뭔가를 할 수 없다는 것입니다.

MyMethod<fooInstance>("foo1","foo2") 

및 클래스보다는 참조 형식을 가져와야합니다.

object o = Activator.CreateInstance(Type.GetType(Assembly.GetExecutingAssembly().GetName().Name + ".Foo")); 
    MyMethod<o.getType()>("foo1","foo2"); 
+0

왜 당신이 템플릿 방식의 클래스 정보를 얻을해야합니까? 필요한 경우 템플릿 요구 사항을 포괄하는 인터페이스를 사용하거나 템플릿을 사용해서는 안됩니다. – gilbertc

답변

4

당신은

를 사용할 수 있습니다

예 내가 액티베이터 클래스를 사용하여 유형의 반사를 얻고 객체가 MyMethod라는 기능의 일반 전화로 돌아 할당해야하므로이 때문에 클래스 이름은 암호화

Type type = typeof(T); 
내가 여기에 일반적인 방법을 사용하여 많은 이득을 얻을 수있을 거라 생각하지 않습니다 제대로 질문을 이해한다면 T.

0

로 전달 유형을 얻을 수 있습니다. 그것은 유용 할 것

경우 메소드 서명 :

public Func<T, bool> MyMethod<T>(string paramName, T value) where T : class