C# 在派生类中,如何从基类中的属性类型获得派生类型的属性?
这是我经常遇到的一个巨大的设计问题,我认为这是因为我不理解OOP 以下是基本属性的类别:C# 在派生类中,如何从基类中的属性类型获得派生类型的属性?,c#,oop,C#,Oop,这是我经常遇到的一个巨大的设计问题,我认为这是因为我不理解OOP 以下是基本属性的类别: public class BasePropety {} 以下是my DerivedProperty的类型: public class DerivedProperty : BaseProperty { public AClass A { get; set; } } 这是我的基本类: public class BaseClass { public BaseProperty Property
public class BasePropety {}
以下是my DerivedProperty的类型:
public class DerivedProperty : BaseProperty
{
public AClass A { get; set; }
}
这是我的基本类:
public class BaseClass
{
public BaseProperty Property { get; set; }
}
下面是我的派生类:
public class DerivedClass : BaseClass
{
public DerivedProperty Property { get; set; }
public void MethodExample()
{
AClass aValue = this.Property.A;
}
}
我当然可以打印我的财产,但这很烦人:
public class DerivedClass : BaseClass
{
public void MethodExample()
{
var typedProperty = (DerivedProperty) this.Property;
AClass aValue = typedProperty.A;
}
}
我知道我可以使用新的关键字,但我读到这里和那里,这是一个坏的做法,那么我应该如何实现这一点?我应该创建一个新的属性吗
提前感谢您的回答。听起来您需要的是仿制药:
public class BaseClass<T> where T : BaseProperty
{
public T Property { get; set; }
}
public class DerivedClass : BaseClass<DerivedProperty>
{
public void MethodExample()
{
AClass aValue = Property.A;
}
}
公共类基类,其中T:BaseProperty
{
公共T属性{get;set;}
}
公共类派生类:基类
{
public-void-MethodExample()
{
AClass aValue=Property.A;
}
}
请注意,这意味着只有一个属性——而在当前代码中,实际上有两个独立的属性,它们恰好具有相同的名称。我怀疑你不想这样。听起来你需要的是泛型:
public class BaseClass<T> where T : BaseProperty
{
public T Property { get; set; }
}
public class DerivedClass : BaseClass<DerivedProperty>
{
public void MethodExample()
{
AClass aValue = Property.A;
}
}
公共类基类,其中T:BaseProperty
{
公共T属性{get;set;}
}
公共类派生类:基类
{
public-void-MethodExample()
{
AClass aValue=Property.A;
}
}
请注意,这意味着只有一个属性——而在当前代码中,实际上有两个独立的属性,它们恰好具有相同的名称。我想你不会想要的。这很符合我的需要。我确实不想让它看起来像我想要两个独立的属性。谢谢你的回答。这很符合我的需要。我确实不想让它看起来像我想要两个独立的属性。谢谢你的回答。