C# dll (COM interop 옵션에 대한 레지스터가 설정된 경우)이 있습니다.Managed C# List를 관리되지 않는 C++ 코드로 반환
이 C#을 dll은 아래의 인터페이스와 클래스 I가 관리되지 않는 C++에서 방법의 IsNameExists 및 GetNameList를 호출 할 필요가
interface IMyInterface
{
bool IsNameExists(string name);
List<string> GetNameList();
}
public class MyClass : IMyInterface
{
public bool IsNameExists(string name)
{
//DO Something
}
public List<string> GetNameList()
{
// DO something
}
}
있습니다.
위와 같이 COM 개체를 생성하고 아무런 문제없이 IsNameExists 메서드를 호출했습니다. GetNameList 방법이 목록을 반환하기 때문에
, 나는 아래의 경고
'MyDll.IMyInterface.GetNameList (# 0), MyDll'을 얻고있다. 경고 : 형식 라이브러리 내보내기에서 서명에 제네릭 형식 인스턴스가 발생했습니다. 일반 코드를 COM으로 내보낼 수 없습니다.
비 관리 C++ 코드로 C# 목록을 반환하는 방법을 알려주십시오. 따라서 관리되지 않는 C++ 코드는이 목록을 사용할 수 있습니다.
COM은 .NET 제네릭에 대한 빈을 알고 있습니다. 대신 ArrayList 또는 제네릭이 아닌 IEnumerator 또는 자신의 컬렉션 인터페이스를 반환하십시오. –