일반 형식을 COM과 함께 직접 사용할 수없는 것으로 보입니다. MSDN의 Interoperating Using Generic Types을 참조하십시오.일반 형식을 사용하는 COM Interop
누구에게 어떻게 달성 할 수 있습니까?
일반 형식을 COM과 함께 직접 사용할 수없는 것으로 보입니다. MSDN의 Interoperating Using Generic Types을 참조하십시오.일반 형식을 사용하는 COM Interop
누구에게 어떻게 달성 할 수 있습니까?
제 생각에는 일반 유형을 ComVisible
으로 직접 표시 할 수는 없지만 해당 유형은 ComVisible
이 아닌 일반 인터페이스를 구현할 수 있다고 생각합니다. 나는이 기사에 대해 얘기하고있는 "간접적으로"를 가정하자
[ComVisible(true)]
public interface IBake
{
Pastry Bake();
}
public class Baker<Recipe> : IBake
{
public Baker(Recipe ingredients) {...}
public Pastry Bake()
{
...
}
}
[ComVisible(true)]
public class Bakery
{
public IBake GetBaker(string recipe)
{
// somehow get recipe type from string
// and create and return Baker<Recipe>
// Client can now call IBake.Bake().
}
}
:
그래서, 일반적인 Baker<Recipe>
주어, 당신은 같은 것을 도입해야합니다. 그러나 VB.NET의 Controls 컬렉션이이 작업과 관련이 있다는 것을 알지 못합니다.
나는 이것이 실제로 버그 (제네릭 형식을 사용하는 경우는 .NET 프레임 워크 또는 COM Interop를 함께하면 나도 몰라 생각 ()가 vb.net 사용하여 설명하기 위해 :. 내가 허용하는 경우 은 VB.NET이 작동하려면 어떤 타입의 객체를 'generic'디자이너가 처리 할 수 있는지, 제대로 작동하는지는 userform입니다 (Microsoft.VisualBasic.Information.TypeName을 반환하여 이것을 알고 있습니다). 일반 객체를 명시 적으로 Userform으로 설정하면, 어떤 .NET 언어로든 오류가 발생했습니다 : { "서버가 예외를 throw했습니다. (HRESULT 예외 : 0x80010105 (RPC_E_SERVERFAULT))"} – jedd
당신이 나를 거기에서 잃어 버렸습니다, 두렵습니다 ... –
자세히 설명해 주시겠습니까? 어떻게 할 수 있는지 물어 보면 끝나지 않습니다. 특정 시나리오가 있습니까? –
참조 된 문서에는 'directlty'가 나와 있으므로 '간접적으로'사용할 수있는 방법이 있다고 가정합니다. 구체적인 예는 다음과 같습니다. http://stackoverflow.com/questions/1200576/find-all-controls-on-msform-from-c – jedd
VB.NET은 더 많은 정보를 추가하기 위해 refredced 코드가 작동하는 것처럼 '간접적 인'것. Controls 컬렉션에서 잘못 입력하면 다음 오류가 발생합니다. System.MisingMemberException 'Microsoft.VisualBasic.dll에서 발생했습니다. 그래서 C#에서 실행되는 코드를 얻으려면 무엇이 있는지 알아야합니다. – jedd