내가 가지고있는 다음 코드 (이름은 예제 목적입니다) : 사전으로 나에게 데이터를 제공캐스트 : T3는 오류가 발생
일부 기능 :
public Dictionary<IMayor, SocialStatus> GetMayorSocialStatuses()
{
//Do Stuff
}
public Dictionary<IJanitor, SocialStatus> GetJanitorSocialStatuses()
{
//Do Stuff
}
그런 다음이 결과를 IPerson
유형의 사전에 추가하려고했습니다.
IJanitor
과 IMayor
은 모두 IPerson
입니다. 나는 아무 문제가 없습니다 가정
는, 나는 다음을 수행하려고 노력 해요 :
public Dictionary<IPerson,SocialStatus> GetPersonsSocialStatuses()
{
var dict=new Dictionary<IPerson,S ocialStatus>();
foreach(var mayorKvp in GetMayorSocialStatuses())
{
dict.Add(mayorKvp.Key,mayorKvp.Value);
}
foreach(var janitorKvp in GetJanitorSocialStatuses())
{
dict.add(janitorKvp.Key,janitorKvp.Value);
}
}
매력처럼 일하지만 foreach는이 digusting 보인다. 나는이 확장 방법으로 대체 시도
는 :
public static Dictionary<IPerson,SocialStatus> AddRange(
this Dictionary<IPerson,SocialStatus> dict,
Dictionary<IPerson,SocialStatus> inputDict)
{
foreach(var kvp in inputDict)
{
dict.add(kvp.Key,kvp.Value);
}
return dict;;
}
있지만 이렇게하여
은, 내가 그것을IPerson,SocialStatus
에 유형
IMayor,SocialStatus
의 사전에서 변환 할 수있는 컴파일 오류를 받았다.
문제를 조사한 후 상속이 사전에 따라 이동하지 않고 캐스트를 만들 수 없다는 의미의 "일반 제네릭 유형"이라는 방식으로 캐스팅 할 수 없다는 것을 깨달았습니다.
질문 : 어떻게하면 문제를 해결할 수 있습니까?
더 깨끗한 방법이 없습니까? (공급자가 같은 클래스에없는 경우/정적 클래스는, 내가 망했기 때문에)
은
그래서 모든 솔루션은 잘 될 것입니다 .NET의 특정 버전에 바인더 제본하고 있지 않다.
멋진 대답! 매력처럼 작동합니다! – shirbr510