سؤال

لدي ما بعد التعليمات البرمجية:

public abstract class TestProperty
{
    public abstract Object PropertyValue { get; set; }
}

public class StringProperty: TestProperty
{
    public override string PropertyValue {get;set}
}

التي تولد خطأ في تجميع، أتساءل يجب علي استخدام نوع عام في TestProperty من أجل تحقيق هدفي المتمثل في وجود نوع مختلف من نفس الاسم في فئة الطفل؟

هل كانت مفيدة؟

المحلول

نعم، C # لا يدعم أنواع عودة covariant. يمكنك بالفعل استخدام الأجداد هنا:

public abstract class TestProperty<T>
{
    public abstract T PropertyValue { get; set; }
}

public class StringProperty : TestProperty<string>
{
}

ليست هناك حاجة لتجاوزها في هذه المرحلة - وفي الواقع ما لم تكن ستفعل أي شيء آخر، فقد تتخلص من ذلك StringProperty تماما واستخدام فقط TestProperty<string>.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top