Свойства C# и TLBEXP (Com)
У меня есть 2 проекта. 1-й - C++ проект. 2-й - C# проект. В проекте C# у меня есть интерфейс, который имеет несколько методов и несколько свойств. Проект C++ использует C# dll этими интерфейсами. Я использую утилиту tlbexp, все выглядит хорошо, и у меня не было никаких проблем, пока я не решил использовать нестандартный тип собственности.
Итак, вот пример:
- 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; } }
- В C++ я получаю ptr для объекта IFoo, все в порядке. Я даже могу получить Id объекта IFoo, но есть две проблемы: A) не могу получить FooPos из объекта IFoo. Б) не может получить IBase.ItemHeader из объекта IFoo.
Итак, как я понял, tlb не знает о производных интерфейсах, и более того, он не поддерживает пользовательские типы свойств.
Буду признателен за любую информацию о том, как решить проблемы A) и B) С уважением!