我有两个类,除了一个类需要另一个属性之外,它们应该完全相同。
我没有将所有属性重写两次,而是想从 BaseClass 继承所有属性,而只在 MyNewClass 中添加一个额外属性
public class BaseClass
{
public int BaseProperty1 { get; set; }
public int BaseProperty2 { get; set; }
public int BaseProperty3 { get; set; }
}
public class MyNewClass: BaseClass
{
public int? ExtraProperty{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
因为我已经在我的函数中填写了原始 BaseClass 的所有细节,所以能够使用这个类的实例来填写 MyNewClass 的新实例的细节会容易得多。
我希望它会像以下一样简单,但不幸的是我收到错误:System.InvalidCastException:'无法将'BaseClass'类型的对象转换为'MyNewClass'。'
MyNewClass myNewClass= new MyNewClass();
myNewClass = (MyNewClass)baseClass; //baseClass is alread populated at this point
myNewClass.ExtraProperty = 1;
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用另一个少一个属性的类来快速填充一个类?
我可以单独设置每个属性,但我使用的类非常大,感觉很糟糕。
在此先感谢您的帮助。
并非每个Fruit都是apple,因此从编译器的角度来看,并不是 everyBaseClass都是一个实例,MyNewClass因此转换失败。
您可以做几件事。例如使用构造函数来填充值:
public class MyNewClass : BaseClass
{
public int? ExtraProperty { get; set; }
public MyNewClass(BaseClass baseClass)
{
BaseProperty1 = baseClass.BaseProperty1;
BaseProperty2 = baseClass.BaseProperty2;
BaseProperty3 = baseClass.BaseProperty3;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
var myNewClass = new MyNewClass(baseClass);
myNewClass.ExtraProperty = 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |