Свойства C# и TLBEXP (Com)

У меня есть 2 проекта. 1-й - C++ проект. 2-й - C# проект. В проекте C# у меня есть интерфейс, который имеет несколько методов и несколько свойств. Проект C++ использует C# dll этими интерфейсами. Я использую утилиту tlbexp, все выглядит хорошо, и у меня не было никаких проблем, пока я не решил использовать нестандартный тип собственности.

Итак, вот пример:

  1. C#
[ComVisible(true)]
public interface IBase
{
    string ItemHeader
    {
        [return: MarshalAs(UnmanagedType.LPStr)]
            get;
    }
}

[ComVisible(true)]
public interface IPosition
{
    int X
    {
        get;
    }
}

[ComVisible(true)]
public interface IFoo : IBase
{
    IPosition FooPos
    {
        get;
    }
    int Id
    {
        get;
    }

}
  1. В C++ я получаю ptr для объекта IFoo, все в порядке. Я даже могу получить Id объекта IFoo, но есть две проблемы: A) не могу получить FooPos из объекта IFoo. Б) не может получить IBase.ItemHeader из объекта IFoo.

Итак, как я понял, tlb не знает о производных интерфейсах, и более того, он не поддерживает пользовательские типы свойств.

Буду признателен за любую информацию о том, как решить проблемы A) и B) С уважением!

0 ответов

Другие вопросы по тегам