C# Spring.Core.TypeMismatchException:无法将类型为[…]的属性转换为所需类型[…]
我的问题是,在我对正在进行的项目进行tfs更新之后,我无法再进行任何测试。 在更新之前,它起作用了,但现在我每次运行testclass中的C# Spring.Core.TypeMismatchException:无法将类型为[…]的属性转换为所需类型[…],c#,nhibernate,spring.net,C#,Nhibernate,Spring.net,我的问题是,在我对正在进行的项目进行tfs更新之后,我无法再进行任何测试。 在更新之前,它起作用了,但现在我每次运行testclass中的ContextRegistry.GetContext()方法时都会得到一个Spring.Core.typemischException MyProjectDao上唯一的更改是其方法中的更改,并添加了属性。并且向SpringContext.xml添加了一个服务 这是我得到的例外: System.Configuration.ConfigurationErrorsE
ContextRegistry.GetContext()
方法时都会得到一个Spring.Core.typemischException
MyProjectDao上唯一的更改是其方法中的更改,并添加了属性。并且向SpringContext.xml添加了一个服务
这是我得到的例外:
System.Configuration.ConfigurationErrorsException:
System.Configuration.ConfigurationErrorsException:创建错误
上下文“spring.root”:PropertyAccessExceptionsExceptionsException(1个错误);
嵌套的PropertyAccessException是:
[Spring.Core.TypeMismatchException:无法转换的属性值
键入[CompositionOpProxy_f81c875c2f994f88bb773f5743050b67]至
属性的必需类型[MyProject.Dao.MyProjectDao]
“MyProjectDao.”,内部异常:
Spring.Core.TypeMismatchException:无法转换属性值
类型为[CompositionOpProxy_F81C875C2F994F88BB773F57430B67]至
属性的必需类型[MyProject.Dao.MyProjectDao]
“MyProjectDao”。
在Spring.Core.TypeConversion.TypeConversionUtils.ConvertValueIfEssential(类型
中的requiredType、对象newValue、字符串propertyName)
f:\bambol home\xml data\build dir\SPRNET-RELEASE-JOB1\src\Spring\Spring.Core\Core\TypeConversion\TypeConversionUtils.cs:MyProject
211.]-->Spring.Objects.Factory.ObjectCreationException:创建名为“MyProjectService”的对象时出错,该对象在“文件”中定义
[C:\Projects\MyProject\MyProject.NET\test\MyProject.Service.test\bin\Debug\SpringContext.xml]
第147行“:设置属性值时出错:
PropertyAccessExceptionsExceptionsException(1个错误);嵌套
PropertyAccessException包括:
[Spring.Core.TypeMismatchException:无法将[CompositionOpProxy_f81c875c2f994f88bb773f5743050b67]类型的属性值转换为
属性的必需类型[MyProject.Dao.MyProjectDao]
“MyProjectDao.”,内部异常:Spring.Core.typemischException:
无法转换类型的属性值
[Composition Opproxy_f81c875c2f994f88bb773f5743050b67]符合要求
为属性“MyProjectDao”键入[MyProject.Dao.MyProjectDao]。位于
Spring.Core.TypeConversion.TypeConversionUtils.ConvertValueIfEssential(类型
中的requiredType、对象newValue、字符串propertyName)
f:\bambol home\xml data\build dir\SPRNET-RELEASE-JOB1\src\Spring\Spring.Core\Core\TypeConversion\TypeConversionUtils.cs:MyProject
211.]-->Spring.Objects.propertyaccessExceptionsExceptionsExceptionsException:propertyaccessExceptionsExceptionsExceptionsException(1个错误);嵌套
PropertyAccessException为:[Spring.Core.TypeMismatchException:
无法转换类型的属性值
[Composition Opproxy_f81c875c2f994f88bb773f5743050b67]符合要求
为属性“MyProjectDao”键入[MyProject.Dao.MyProjectDao]。,
内部异常:Spring.Core.typemischException:无法
转换类型的属性值
[Composition Opproxy_f81c875c2f994f88bb773f5743050b67]符合要求
为属性“MyProjectDao”键入[MyProject.Dao.MyProjectDao]。
在Spring.Core.TypeConversion.TypeConversionUtils.ConvertValueIfEssential(类型
中的requiredType、对象newValue、字符串propertyName)
f:\bambol home\xml data\build dir\SPRNET-RELEASE-JOB1\src\Spring\Spring.Core\Core\TypeConversion\TypeConversionUtils.cs:MyProject
211.]
MyProjectDao类如下所示:
namespace MyProject.Dao
{
[DataAccessObject]
[Transaction(TransactionPropagation.Mandatory)]
public class MyProjectDao : IMyProjectDao
{
public ISessionFactory SessionFactory { private get; set; }
// ... Methods ...
}
}
IMyProjectDao接口:
namespace MyProject.Dao
{
public interface IMyProjectDao
{
// ... Methods ...
}
}
这是我的SpringContext.xml的一部分
<!-- ######################## -->
<!-- DAO -->
<!-- ######################## -->
<object id="MyProjectDao" type="MyProject.Dao.MyProjectDao, MyProject">
<property name="SessionFactory" ref="SessionFactory" />
</object>
<!-- ######################## -->
<!-- Service -->
<!-- ######################## -->
<object id="MyProjectService" type="MyProject.Service.MyProjectService, MyProject">
<property name="MyProjectDao" ref="MyProjectDao" />
<property name="PersistenceService" ref="PersistenceService" />
<property name="DeletedObjectCache" ref="DeletedObjectCache" />
</object>
您是在MyProjectDao属性的MyProjectService中使用接口“IMyProjectDao”,还是使用类“MyProjectDao” 如果使用该类,请将其更改为接口 将MyProjectService类中的属性更改为:
public MyProjectDao MyProjectDao { get; set; }
到
这很可能就是问题所在。我猜问题是从@Lyndon添加了
[Transaction..]
属性开始的;这导致spring为MyProjectDao
类型的接口创建一个基于合成的代理,而不是简单地使用类型MyProjectDao
本身。
public IMyProjectDao MyProjectDao { get; set; }