'a taşımak istemiyor Bir COM API'si sarıyorum. Genel olarak, bazı jenerik sınıfları tasarlamada ve test edilen parçaları bu sınıflara çekerek iyi şanslar elde ettim.Yöntem, Genel Sınıf
İşte bana bir sorun veren. Sonuç kümelerini temsil eden sınıflar var. Miras almazlar, ortak bir arayüz uygularlar, ancak çok basit bir arayüzdür. ResultSet işlevini, özellikle .COUNT veya .GetAt (i)
açığa çıkarmayacağım Çözümüm bunu bir TALİMATLIK yapmak ve benim için işi yapmak için CodeSmith kullanmaktır. Dünyanın sonu değil. Varlık başına üretilen 13 kod daha.
Bunu köprüleyebileceğim bir sınıfla ve bunun üstesinden gelebilecek bir arabirimle oynadım, ancak sonuç kümesini temsil eden API'da ortak bir 'şey' olmadığı gerçeğine geri dönüyorum.
Bir şeyleri kaçırıyor olabilirim, kesinlikle çözümü görmüyorum.
Ben Generic bu işlevi taşımak istiyoruz etrafında
aşağıda listelenmiştir işin bir örneği için kodu. Şu anda jenerik kullanan sınıfın her örneğinde oturur.
ICustomerRetList, IBase'den devralınır. IBase, yukarıda belirtildiği gibi .Count veya .GetAt() 'a sahip değildir.
sorum Clear- olmak şudur: Eğer tüm uygulamaları arasında ise bana jenerik sınıfa
Public Overrides Function RetListToList(RetList As ICustomerRetList) As List(Of Customer)
Dim oItem As ICustomerRet
Dim oItem As Customer
Dim l As New List(Of Customer)
For idx = 0 To RetList.**Count** - 1 '.Count is not a member of IBase
oqbItem = RetList.**GetAt**(idx) '.GetAt() is not a member of IBase
oItem = New Customer()
'add the Item to the list
Call l.Add(oItem)
Next
Return l
End Function
ICustomerRetList nasıl uygulanır? Bu yöntemleri neden bu arayüze eklemiyorsunuz? –
@Gosha, İlginiz için teşekkürler. Bu, paketlediğim bir 3. parti API'sı. Değişime açık değil. Soruyu cevaplamak için, bir dll içinde uygulanan bir COM Arayüzüdür. Tekrar teşekkürler. – greg
Aynı adı kullanırlarsa, yöntemi çalışma zamanı nesne türünden almak için yansımayı kullanan bir Uzantı Yöntemi kullanabilirsiniz. Bunun üretilmesinden daha iyi bir çözüm olacağını emin değilim. – user1937198