C#将孩子强制转换为父母

时间:2019-02-06 11:29:53

标签: c#

你好,我有这个课:

class A{
 public string P1{get; set;}
 public string P2{get; set;}
 ...
 public string PX{get; set;}
}

此类在DLL中,并且我不需要更改它。但是我想添加一些属性,所以我创建了B类:

class B : A{
  public bool IsSelected{get;}
}

可以,但是现在我想将B类转换为A类(没有IsSelected属性):

B b = new B();
A a = (A)b;

变量a具有IsSelected。是方法吗?还是如何更好地设计此模型?

2 个答案:

答案 0 :(得分:1)

  

正在使用WCF发送对象A,并且包含IsSelected属性时,将无法发送该对象。在应用程序中,我需要A + IsSelected,但是当我需要发送它时,A必须没有IsSelected

您可以通过应用IgnoreDataMember属性告诉WCF序列化程序忽略该字段:

class B : A{
  [IgnoreDataMember]
  public bool IsSelected{get;}
}

答案 1 :(得分:1)

一种可能的解决方案是确定不是B是-A而是B具有-A:

class B 
{
  public A A { get;  }
  public bool IsSelected{get;}
}