|
|
1
4
当b继承a时,它已经拥有dto属性。所以问题是你真的隐藏了这个继承。在B类中不需要新的属性,只需要在类构造函数中设置它。
但是,在您的主类中,您需要在您的属性中进行显式强制转换,如下所示,因为DTO没有“name”属性。
|
|
|
2
3
如果对象实际上是基类型,则不能只附加附加附加属性。不是那样的,对不起。 你想要的是转换对象(也许)。在子类中创建一个构造函数,该构造函数可以获取父类并将其所有内容复制到自身中,这样您就拥有了额外的属性。 |
|
|
3
3
强制转换失败的原因是,您没有将mydto对象传递给方法,而是将dto对象传递给方法。myblmethod方法总是将dto对象发送到dal,即使存在mydto对象。 您尚未将d属性设为虚拟。这意味着在引用上使用d属性时,即使实际对象发生在a b实例上,也会得到a类所包含的d to对象,从而使它也具有mydto对象。 您可以使d属性为虚拟的,以访问实际对象的d属性,而不是由引用类型指定的属性。 或者您可以将引用强制转换为b,这样您就可以访问它的mydto对象而不是dto对象:
注意,B类同时包含DTO和MyDTO对象,这可能不是您真正想要的。 |
|
|
4
2
听起来您正在失去“分辨率”,因为您正在传递静态业务逻辑方法。我建议重新审视这一部分,而不是先尝试DAL方法。 但是,可能有一个原因让您坚持这样做,所以如果您坚持这样做,您可以考虑使用反射来查找所需的属性,或者使用“as”强制转换,然后在DAL方法中测试空值。如果您不坚持这种设计,那么我将重构出静态方法。静态看起来很容易,不幸的是,有很多代码“质量”工具促使您使方法成为静态的,忘记提醒您以后不能轻易地将静态方法更改为虚拟方法。 |
|
5
1
允许
|