2014-11-10 3 views
0

나는 유틸리티 클래스제네릭 동적 유형

public void Navigate<TDestinationViewModel>(){//Implementation omitted} 

에 다음과 같은 방법 서명이 이제 다른 클래스 I 유틸리티의 메소드를 호출하려면이 방법 안에 다음과 같은 방법

public void Navigate(object navigateParam) 

에게있다 다음과 같이하면 클래스가됩니다.

UtilityClass.Navigate<typeof(navigateParam)>(); 

본질적으로 매개 변수 b의 유형을 알지 못합니다. eing이 메소드에 전달되었습니다. 어떻게해야합니까?

답변

0

클래스가 추상적 인 것으로 보이고 클래스와 메소드 매개 변수 만 제네릭을 가질 수 있으므로 메소드가 쓸모없는 일반을 정의합니다. 메서드에 제네릭 값을 전달하는 것도 불가능합니다.

public void Navigate(TDestinationViewModel param){//Implementation omitted} 

And then UtilityClass.Navigate(navigateParam); 

아니면 다음

주의를하는 데 도움이

public class Navigator<T extends TDestinationViewModel> { 
    public void Navigate(T param){//Implementation omitted} 
} 
UtilityClass.Navigate(navigateParam); 

희망 제네릭을 사용하려면 :

수정을해야합니다! 정적 메서드는 인스턴스를 가질 수 없습니다! 그래서 클래스의 일반은 정적이 아니기 때문에 정적 메서드에 적용 할 수 없습니다! 제네릭을 사용하려면 제네릭을 정의하는 클래스의 객체 인스턴스가 필요합니다. 하지만 문제는 generics가 필요 없다는 것입니다. Baseclass TDestinationViewModel 만 있으면 충분합니다.