제네릭으로 시작한 것만 큼 정확한 질문이없는 것 같아서 제 지식은별로 좋지 않습니다.일반 목록을 반환하는 방법은 무엇입니까?
public class Wrapper
{
public List<TInfoType> GetInfo<TInfoType>(Array data, EdmCmd edmCmd)
{
switch (edmCmd.meCmdType)
{
case EdmCmdType.EdmCmd_PostAdd:
List<EdmCmdPostAddInfo> info = new List<EdmCmdPostAddInfo>();
foreach (EdmCmdData item in data)
{
info.Add(new EdmCmdPostAddInfo(item.mlObjectID1, item.mlObjectID2, item.mbsStrData1, item.mlLongData1));
}
return info;
break;
default:
break;
}
}
}
그리고이 같은 메서드를 호출하고 싶습니다 :
List<EdmCmdPostAddInfo> info = wrapper.GetInfo<EdmCmdPostAddInfo>(data, edmCmd)
이 작업을 수행하는 올바른 방법은 무엇을
나는 다음과 같은 방법을 말해? 메소드에 전달되는 EdmCmd 구조체는 일반적으로 명명 된 다양한 회원을 가지고 있기 때문에 나는이 일을하고Cannot implicitly convert type 'System.Collections.Generic.List<EPDM.Utils.EdmCmdPostAddInfo>' to 'System.Collections.Generic.List<TInfoType>'
: 나는 오류를 얻고있다. 멤버가 각 CmdType에 대해 나타내는 것을 기억하기가 어렵 기 때문에 좀 더 의미있는 구조체에 래핑합니다.
답변이 아니지만 C# 3.0에서 제네릭이 변하지 않는다고 생각합니다. 컴파일 할 C# 4.0 : http://visualstudiomagazine.com/Articles/2009/05/01/Generic-Covariance-and-Contravariance-in-C-40.aspx?Page=1 –