有什么方法可以让我给孩子们一些属性吗?
我有一个场景,其中所有子类包含基础但不是所有属性的属性。
假设我拥有所有类的属性
public string AAAAA { get; set; }
public string ABbbb { get; set; }
public string ACCCCC { get; set; }
public string ADDDDDD { get; set; }
public string AEEEEE { get; set; }
public string BBBBBB { get; set; }
public string BBBAAA { get; set; }
public string CCCCAAA { get; set; }
public string DDDAAAA { get; set; }
在A级我只想要
AAAAA
BBBAAA
属性,在B类中我想要每个属性,在C类中只需要
ACCCCC
BBBAAA
等等..我有什么方法可以做到这一点吗?
答案 0 :(得分:3)
我认为您想达到的目标是这样的:
public interface ITypeAny
{
string MyCommonProperty { get; set; }
}
public interface ITypeA : ITypeAny
{
string AAA { get; set; }
}
public interface ITypeB : ITypeAny
{
string BBB { get; set; }
}
public abstract class TypeAny : ITypeAny
{
public string MyCommonProperty { get; set; }
}
public class TypeA : TypeAny, ITypeA
{
public string AAA { get; set; }
}
public class TypeB : TypeAny, ITypeB
{
public string BBB { get; set; }
}
通过这种方式,您可以为所有子类创建公共属性(您将其视为ITypeAny
)并且同时具有某些子类的特定属性(在这种情况下,您必须将它们视为{ {1}}或ITypeA
)。
答案 1 :(得分:0)
其他答案很棒,因为他们试图帮助你,无视缺乏具体的例子。 这个答案试图直截了当。你的问题:
有什么方法可以让我给孩子们一些属性吗?
我有一个场景,其中所有子类包含基础但不是所有属性的属性。
否,无法使子类仅从基类继承某些属性。
你应该重新考虑你的设计,并可能回到一个更具体,具体的问题。 (另外,也许你有一个XY-problem?)
答案 2 :(得分:-2)
您可以使用私有,公共等修饰符来从子类访问成员。一旦基类具有包含public,internal或protected修饰符的成员,就无法将它们隐藏在兄弟类中。所有兄弟姐妹都有能力访问这些成员。在您的情况下,您必须将公共成员放在基类中,并将所有其他成员放入他们自己的类中。
由于您无法在C#中使用多重继承,因此您可以使用组合或将实体特定成员放入其自己的类中,如上所述。