Spring.Core.TypeMismatchException:无法将[...]类型的属性转换为所需类型[...]

时间:2013-05-23 10:13:52

标签: c# nhibernate spring.net

我的问题是,在我正在进行的项目上进行tfs更新后,我再也无法进行任何测试了。 在更新之前它有效,但现在我每次在我的测试类'Spring.Core.TypeMismatchException方法中运行ContextRegistry.GetContext()方法时都会得到Init()

MyProjectDao上的唯一更改是其方法内的更改,并添加了属性。并且已在SpringContext.xml中添加了一项服务。

这是我得到的例外:

  

System.Configuration.ConfigurationErrorsException:   System.Configuration.ConfigurationErrorsException:创建错误   context'chring.root':PropertyAccessExceptionsException(1个错误);   嵌套的PropertyAccessExceptions是:

     

[Spring.Core.TypeMismatchException:无法转换属性值   输入[CompositionAopProxy_f81c875c2f994f88bb773f5743050b67]到   属性的必需类型[MyProject.Dao.MyProjectDao]   'MyProjectDao'。,内部例外:   Spring.Core.TypeMismatchException:无法转换属性值   类型[CompositionAopProxy_f81c875c2f994f88bb773f5743050b67]来   属性的必需类型[MyProject.Dao.MyProjectDao]   'MyProjectDao'。                  在Spring.Core.TypeConversion.TypeConversionUtils.ConvertValueIfNecessary(Type   inType,Object newValue,String propertyName)in   F:\竹家\ XML数据\集结目录\ SPRNET释放 - JOB1的\ src \春\ Spring.Core \核心\ TypeConversion \ TypeConversionUtils.cs:MyProject的   211.] ---> Spring.Objects.Factory.ObjectCreationException:创建在'file中定义名称为'MyProjectService'的对象时出错   [C:\项目\ MyProject的\ MyProject.NET \测试\ MyProject.Service.Test \ BIN \调试\ SpringContext.xml]   第147行:设置属性值时出错:   PropertyAccessExceptionsException(1个错误);嵌套   PropertyAccessExceptions是:              [Spring.Core.TypeMismatchException:无法将类型[CompositionAopProxy_f81c875c2f994f88bb773f5743050b67]的属性值转换为   属性的必需类型[MyProject.Dao.MyProjectDao]   'MyProjectDao'。,内部异常:Spring.Core.TypeMismatchException:         无法转换类型的属性值   [CompositionAopProxy_f81c875c2f994f88bb773f5743050b67]要求   输入属性“MyProjectDao”的[MyProject.Dao.MyProjectDao]。在   Spring.Core.TypeConversion.TypeConversionUtils.ConvertValueIfNecessary(类型   inType,Object newValue,String propertyName)in   F:\竹家\ XML数据\集结目录\ SPRNET释放 - JOB1的\ src \春\ Spring.Core \核心\ TypeConversion \ TypeConversionUtils.cs:MyProject的   211.] ---> Spring.Objects.PropertyAccessExceptionsException:PropertyAccessExceptionsException(1个错误);嵌套   PropertyAccessExceptions是:[Spring.Core.TypeMismatchException:   无法转换类型的属性值   [CompositionAopProxy_f81c875c2f994f88bb773f5743050b67]要求   输入属性“MyProjectDao”的[MyProject.Dao.MyProjectDao]。,         内部异常:Spring.Core.TypeMismatchException:不能   转换类型的属性值   [CompositionAopProxy_f81c875c2f994f88bb773f5743050b67]要求   输入属性“MyProjectDao”的[MyProject.Dao.MyProjectDao]。                  在Spring.Core.TypeConversion.TypeConversionUtils.ConvertValueIfNecessary(Type   inType,Object newValue,String propertyName)in   F:\竹家\ XML数据\集结目录\ SPRNET释放 - JOB1的\ src \春\ Spring.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>

1 个答案:

答案 0 :(得分:2)

您是在MyProjectService中使用MyProjectDao属性的“IMyProjectDao”接口,还是使用“MyProjectDao”类?

如果您使用该类将其更改为界面。

在MyProjectService类中更改您的属性:

public MyProjectDao MyProjectDao { get; set; }

public IMyProjectDao MyProjectDao { get; set; }