.NET dizisini COM VB6 kitaplığına geçirmeye çalışıyorum. VB6 nesnesinin COM sarıcısı olan bir nesnem var. Aşağıdaki imzayla yöntemi vardır:COM nesnelerini C# dizisi VB6'ya geçirme
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType = MethodCodeType.Runtime)]
void AddEx([MarshalAs(UnmanagedType.Struct)] object vSafeArrayOfItems);
ama onu çağırdığınızda aşağıdaki iletiyle bir ArgumentException
olsun:
Değer beklenen aralıkta girmemektedir.
İstisna türü ve açıklaması, aktarılan öğeye bağlı bile değildir.
Bu sorunun nasıl giderileceğini bilen var mı?
YUKARI: .NET sarıcı derlemeleri ve başvurulan kaynak .COM kitaplıklarını kaldırdım. Hiçbir değişiklik yapılmadı.
[MarshalAs] nitelik açıkça yanlıştır: Eğer yapacağını bir dizi geçirilecek istiyorsanız
(nesne yapılar farklı şekilde ele alınır, bir sınıftır). –
Anlaşmalı. @ user1453239 neden bir yapı olduğunu düşündün? – tcarvin
Bu declaratioin, kullanmaya çalıştığım kitaplıktan. Üçüncü taraf geliştirici tarafından sağlanmaktadır. –