Im разрабатывающей COM объекта в C#, VS 2010, .Net 3.5, x86COM Object - Массив как объект вместо типа
Я использовал, чтобы иметь массив структур в COM-объект, который в VBA обнаружился отлично со всеми полями и всем остальным.
Я переключился на класс, так как он создал некоторые проблемы. Теперь, когда я не могу получить доступ к свойствам в массиве, поскольку элементы в массиве отображаются как объект вместо типа.
[Guid("8b65079f-5d98-41e7-9579-1ee384948e4c")]
[ComVisible(true)]
public interface IContact
{
string Test1 { get; set; }
string[] Array1 { get; set; }
}
[Guid("8b65089f-5d98-41e7-9579-1ee384948e4c")]
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class Contact : IContact //Used To Be a struct
{
//[MarshalAs(UnmanagedType.BStr)]
public string Test1 { get; set; }
public string[] Array1 { get; set; }
}
public class InContainer
{
public Contact[] Contacts { get;set;}
public string[] strings { get; set; }
}
В отладчике я вижу при просмотре поля:
Container.Contacts() -> (от 0 до 4) As Object
вместо
Container.Contacts() -> (0 до 4) Как связаться
Что мне не хватает? Благодаря!
That's один из предостережений при работе с COM, вы не видите, как там * внутри *. Btw: почему этот вопрос помечен C#? – HimBromBeere
Объект com написан на C# Но я видел, что было внутри, когда это была структура, и у меня нет проблем с другими классами. – PonWer
Я думаю, что даже в VBA вы можете использовать typeof для проверки типа объекта. Возможно, стоит пойти. – bilpor