Arabirimler devralma Uygulamamı yazarken karşılaştığım oldukça büyük (benim için) sorununu aşmaya çalışıyorum. Şuna bak, (ı basitlik için kod kısaltmak için çalışacağız) lütfen:C#
Ben IRepository<T>
denilen kök arayüzüne sahip. Bunu uygulayan Sonra, IBookRepository : IRepository<Book>
Sonra, beton sınıfı: BookRepository : IBookRepository
RepositoryManager sınıfta ben
IRepoItem
private IRepository<IRepoItem> currentRepo;
Kitap sınıfı tarafından uygulanan bir arayüz açıkladı. Şimdi
, ben böyle bir şey yapmak deneyin:
dolaylı türünü dönüştürülemez 'BookRepository' 'IRepository' için:
currentRepo = new BookRepository();
Visual Studio hata mesajı verir. bir şey denilen kovaryans olduğunu
Ben (neredeyse kesin) biliyorum ... Açık dönüştürme açıkça döküm çalıştı (bir döküm eksik?)
var, ancak çalışma zamanı istisnası atılır ve bu (muhtemelen) .Net 4.0'da çözüldü. Maalesef, 3.5 numaralı çerçeve kullanarak yazıyorum ve bunu değiştiremiyorum. Lütfen bana ne yapması gerektiğine dair tavsiyelerde bulunun - bu sorunu nasıl aşacağınız? RepoFactory'den currentRepo'yu almak istiyorum, bu da kullanıcıların ihtiyaçlarına göre birkaç çeşit deponit üretecek. Burada bağlantılara izin verilip verilmediğini bilmiyorum, ancak uygulama oluşturmayı tanımladığım http://olgatherer.wordpress.com/'da bir çeşit blog yazdım. İngilizcem iyi değil ama umarım beni anlamak yeterlidir. Cevap için şimdiden teşekkür ederim. kesinlikle bir IRepository<IRepoItem>
gibi bir IRepository<Book>
tedavi edemez .NET 3.5 olarak
Saygılarımızla, skrzeczowas
currentRepo beyan türü nedir:
o zaman istediğinizi yapabilirsiniz: –
Boşver, görüyorum ki bir. –