什么是abstract=“true”?在 spring.net 中?
当我将对象标记为abstract=“true”时,我看到了奇怪的行为。当我将一个对象标记为abstract=“true”时,该对象将如何表现?什么是抽象=“真”。
什么时候使用abstract=“true”?因为我可以通过使用parent =“object id”来继承属性,而无需将父对象标记为abstract =“true”。
奇怪的行为:
当我引用抽象标记对象时,spring 抛出错误(内部异常:Spring.Core.TypeMismatchException:无法将类型 [Spring.Objects.Factory.Support.RootObjectDefinitio n] 的属性值转换为所需类型)
但是当我运行单元测试并使用“ Spring.Testing.NUnit.AbstractDependencyInjectionSpringContextTests ”类型通过自动装配注入依赖项时,Spring 会正确注入抽象标记的对象,这很奇怪。
我不知道发生了什么事?
例如
公共类车辆
{
公共 int NoOfTyre { 得到;放; }
公共字符串颜色{获取;放; }
公共字符串引擎类型{获取;放; }
公共字符串 GearType { 获取;放; }
公共字符串驾驶风格{获取;放; }
公共字符串制造{获取;放; }
}
公共类汽车:车辆
{
公共字符串 DoorType { 获取;放; }
}
公共类滑板车:车辆
{
公共字符串ScooterType { 获取;放; }
}
请帮忙!
干杯, 米林德
I have seen strange behavior when I marked an object as abstract="true". how the object will behave when I marked an object as abstract="true"? what is abstract="true".
when to use abstract="true"? becuase I can inherit the property by using parent="object id" without marked parent object as abstract="true".
the strange behaviour:
When I am refering the abstract marked object, spring is throwing an error (Inner Exception: Spring.Core.TypeMismatchException: Cannot convert property value of type [Spring.Objects.Factory.Support.RootObjectDefinitio n] to required type)
but when I run my unit test and injecting the dependency via autowire by type using " Spring.Testing.NUnit.AbstractDependencyInjectionSp ringContextTests " then the spring is injecting the abstract marked object properly which is strange.
I have no idea what is going on?
e.g.
public class Vehicle
{
public int NoOfTyre { get; set; }
public string Color { get; set; }
public string EngineType { get; set; }
public string GearType { get; set; }
public string DrivingStyle { get; set; }
public string Manufacture { get; set; }
}
public class Car : Vehicle
{
public string DoorType { get; set; }
}
public class Scooter : Vehicle
{
public string ScooterType { get; set; }
}
Please help!
Cheers,
Milind
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
部分Sprint.Net 文档中的对象定义继承对此进行了很好的解释。
当您仅使用对象定义来创建子定义时,请使用
abstract="true"
。出现这种情况可能是因为您知道定义不完整,因为没有相应的 .NET 类,或者只是为了表达您的意图:定义只是一个可重用的模板。The section on object definition inheritance in the Sprint.Net documentation explains it pretty well.
You use
abstract="true"
when you will use the object definition only to create child definitions. This may be the case because you know the definition is incomplete, because there is no corresponding .NET class, or simply to express your intent that the definition is merely a reusable template.