2013-03-07 2 views
0

나는 여러 매개 변수를 더한 반환 형식이 일반적인 방법이 있습니다C# 일반 여러 매개 변수를

public static class Support 
{ 
    public static TR JSONKeyName<TR, T1, T2, T3>(this IEnumerable<Tuple<T1, T2>> a, Action<T3> b) 
    { 
     TR result = default(TR); 

     try 
     { 
      foreach (var entry in a) 
      { 
       b((T3)TypeDescriptor.GetConverter(typeof(T3)).ConvertFromInvariantString("[ \"" + entry.Item1 + "\", " + entry.Item2 + "\" ]")); 
      } 

      result = (TR)Convert.ChangeType(true, typeof(TR)); 
     } 
     catch 
     { 
      result = (TR)Convert.ChangeType(false, typeof(TR)); 
     } 

     return result; 
    } 
}  


List<Tuple<int, string>> list = new List<Tuple<int, string>>(); 
list.Add(new Tuple<int, string>(1, "Test 1")); 
list.Add(new Tuple<int, string>(2, "Test 2")); 
list.Add(new Tuple<int, string>(3, "Test 3")); 

var res = list.JSONKeyName<bool>((string entry) => 
    { 


    }); 

나는 다음과 같은 오류 얻을 위의 예에서 JSONKeyName를 호출 할 때 :

컴파일러 오류입니다 :

*Using the generic method requires 4 type arguments

+2

이 메서드에는 4 개의 매개 변수가 있으므로 4 개의 형식 인수가 필요합니다 ... 어디에서 혼란이 있습니까? –

+0

나는 오류의 의미를 이해합니다. 그러나 매개 변수 중 하나는 TR 인 반환 유형에 대한 것입니다. 그래서 나는 그것을 잘못 사용하고 있을지 모른다. 나는 제네릭을 사용하는 것에 조금 익숙하지 않으므로 코드가 잘못되었을 수도있다. – adviner

+0

예,하지만 T1, T2 및 T3도 지정해야한다. –

답변

2

어, 당신은 여러 인수를 것으로 나타났습니다, 당신은 분명히 그것을 하나 전달하는 - bool합니다. 컨텍스트에 따라 list.JSONKeyName<bool, int, string, string>으로 변경하십시오.

+0

OK 지금 받으십시오. 도와 주셔서 감사합니다. – adviner

관련 문제