A
örneğini List<A>
, B
ve List<B>
vb. Için doğru bir şekilde eklemek için bu kod parçasını nasıl değiştirebilirim? Add()
bağlayıcı tarafından bulunan iken, bu aşırı yük çözünürlüğü başarısız dynamic
geçer, çünküListeye T eklenmesi <T> List '<T>' dinamik 've T' object 'olarak maskelenir?
// someChild's actual type is A
object someChild = GetObject();
// collection's actual type is List<A> though method below returns object
dynamic list = GetListFromSomewhere(...);
// code below throws a RuntimeBinderException
list.Add(somechild);
istisnası atılır. Yukarıdaki yansımayı kullanmak için değiştirmek veya en azından bunu en aza indirmek için değil'u tercih ederim. Her bir A
ve List<A>
için System.Type
örneğine erişimim var. Yukarıdaki kodu içeren sınıf veya yöntem, jenerik değildir.