bir Sipariş sistemini temsil eden aşağıdaki sınıfları dikkate alın:Bir özelliği geçersiz kılmak ve VB.NET'te türetilmiş bir tür döndürmek mümkün mü?
Public Class WebOrder
Inherits OrderBase
Public Overrides Property OrderItem as WebOrderItem
End Property
End Class
Public Class WebOrderItem
Inherits OrderItemBase
End Class
: Artık
Public Class OrderBase
Public MustOverride Property OrderItem as OrderItemBase
End Class
Public Class OrderItemBase
End Class
, biz OrderBase toplam doğasını tutarak, sipariş sınıfların daha spesifik bir dizi bu sınıflar uzatmak istediğinizi varsayalım WebOrder sınıfındaki Overriden özelliği, dönüş türünün OrderBase'de tanımlanandan farklı olduğunu bildiren bir hataya neden olur ... ancak dönüş türü, OrderBase'de tanımlanan türün bir alt sınıfıdır. VB buna neden izin vermiyor?
Sipariş öğelerinizi bir dizi olarak tanımlamak zaten kötü bir fikirdir. Bir liste veya bir numara kullanın. –
Gerçek kodumda listeler.() Ile karışıklık için özür dilerim. –
Ayrıca, [bu C# sorusu] 'nun (http://stackoverflow.com/questions/157119/c-sharp-can-i-override-with-derived-types) nedenleri ve püf noktaları/çözümleri için yanıtlarına da bakın. ([C# 'nin metodu imzası "yeni", VB.Net'te "Gölgeler" dir] (http://stackoverflow.com/questions/8575418/difference-between-shadows-vb-net-and-new-c)) –