2014-11-25 4 views
1

내 매개 변수 값에 제네릭 클래스를 사용하고 인터페이스 메서드를 사용하여 내용을 반환하고 싶지만 일치하는 반환 형식이 없다는 컴파일 오류가 있습니다. 이 문제를 해결할 수있는 방법이 있습니까? 아래 코드 :일반 클래스의 인터페이스와 동일한 반환 유형이 없습니다.

public class Parameter 
    { 
     public Parameter(String name, int value) 
     { 
      this.name = name; 
      this.type = eType.typeInt; 
      this.parameterValue = new ParameterValueTemplate<int>(value); 
     } 

     public Parameter(String name, double value) 
     { 
      this.name = name; 
      this.type = eType.typeDouble; 
      this.parameterValue = new ParameterValueTemplate<double>(value); 
     } 

     public interface IParameterValue 
     { 
      int GetValue(); 
     } 

     class ParameterValueTemplate<T> : IParameterValue 
     { 
      public ParameterValueTemplate(T value) 
      { 
       this.value = value; 
      } 

      public T GetValue() 
      { 
       return value; 
      } 

      T value; 
     } 

     public String name; 
     public IParameterValue parameterValue; 
    } 
+0

귀하의 인터페이스도 제네릭이어야합니다. 아마도 일반적인 매개 변수 값 템플릿의 인터페이스에서 반환 형식으로'int'가 필요하기 때문에 불만을 나타낼 것입니다. – Vlad

+0

클래스 선언이 잘못되었습니다. 'T'가'IParameterValue'라고 기대한다면,'T'에 제너릭 제약이 필요합니다. 제네릭 클래스에 인터페이스를 구현하는 것이 아닙니다. –

+9

어. 왜 당신은 인터페이스를 중첩시킬 수 있습니까? 그것은 인터페이스의 요점을 완전히 무너 뜨립니다! – BradleyDotNET

답변

0

완전히 다른 방식으로이 작업을 수행했습니다 ...! 다른 유형의 값을 포함 할 수있는 제네릭 매개 변수 클래스를 갖기를 원했지만 나머지 코드는 이미 입력되어 있으므로 구조체를 사용하여 구조체를 사용하고 빠른 매개 변수 검색을위한 사전을 사용하여 결과를 얻었습니다.

관련 문제