在C#中,如何继承另一个类的属性类型

时间:2016-06-09 20:40:44

标签: c#

如果您有两个类,例如以下 -

public class AAA
{
   public string PropertyA1 { get; set; }
   public SOMECLASS PropertyA2 { get; set; }
}

public class BBB
{
   public string PropertyB1 { get; set; }
}

我想将BBB更改为以下内容 -

public class BBB
{
   public string PropertyB1 { get; set; }
   public AAA PropertyB2 { get; set; }
   public (SOMECLASS from AAA) PropertyB3  //How can this be done?
}

我应该如何从AAA"

获得" SOMECLASS

构建这两个类的正确方法是什么? 我希望PropertyB3与#34的同一类;来自AAA的#34; SOMECLASS不知道SOMECLASS是什么。

3 个答案:

答案 0 :(得分:0)

如果PropertyB3仅用于阅读,您可以编写类似

的内容
public SOMECLASS PropertyB3 
{  
   get { return ProeprtyB2 == null ? null : PropertyB2.ProeprtyA2 }
}

<强>更新

public class AAA<TSOMECLASS>
{
   public string PropertyA1 { get; set; }
   public TSOMECLASS PropertyA2 { get; set; }
}

public class BBB<TSOMECLASS>
{
   public string PropertyB1 { get; set; }
   public AAA<TSOMECLASS> PropertyB2 { get; set; }
   public TSOMECLASS PropertyB3
   {
       get { return PropertyB2 == null ? null : PropertyB2.PropertyA1; }
       set 
       { 
           if (PropertyB2 == null) PropertyB2 = new AAA<TSOMECLASS>();
           PropertyB2.PropertyA1 = value; 
       }
   }
}

答案 1 :(得分:0)

一种可能的方法是返回 AAA SOMECLASS - &gt; BBB PropertyB2.PropertyA2 属性如下:

public class BBB
{
   public string PropertyB1 { get; set; }
   public AAA PropertyB2 { get; set; }
   public PropertyB3
   {
     get
     {
       return PropertyB2.PropertyA2
     }
   }
}

答案 2 :(得分:0)

你可以这样做:

public class BBB : AAA
{
   public string PropertyB1 { get; set; }
   //inherit from AAA: public SOMECLASS from AAA) PropertyB3 
   // hide the other property from AAA
   private new string PropertyA1 { get; set; }
}