从spring.net注入一个通用IList

本文关键字:一个 IList spring net 注入 | 更新日期: 2023-09-27 18:24:50

我在名称空间Device.Control…中有一个枚举

public enum State {
    IN_PROGRESS, SUSPENDED, HALTED, FINISHED
}

我还有一节课。。。

public class CustomStateManager {
    public IList<State> ManagingStates { get; set; } 
}

这是我的spring.net配置XML…

<object id="MyStateManager" type="CustomStateManager">
    <property name="ManagingStates">
        <list>
            <value>SUSPENDED</value>
            <value>HALTED</value>
        </list>
    </property>
</object>

在构建并尝试注入MyStateManager对象后,Spring.NET抱怨无法设置该对象的ManagingStates属性。我收到这个错误。。。

创建"文件中定义的名为"MyStateManager"的对象时出错[Spring.xml]第3'行:设置属性值时出错:PropertyAccessExceptionsException(1个错误);嵌套的PropertyAccessException为:[Spring.Core.TypeMismatchException:无法转换[System.Collections.ArrayList]类型的属性值到所需类型[System.Collections.Generic.IList 1[[SandboxConsole.Device.Control.ApplicationEnumerations+State, SandboxConsole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]] for property 'ManagingStates'., Inner Exception: Spring.Core.TypeMismatchException: Cannot convert property value of type [System.Collections.ArrayList] to required type [System.Collections.Generic.IList 1[[SandboxConsole.Device.Control.ApplicationEnumerations+State,SandboxConsole,版本=1.0.0.0,区域性=中性,PublicKeyToken=null]]]属性"ManagingStates"。。。

我对Spring.NET有点陌生,除了无法将ArrayList注入IList属性之外,我不知道这里的问题是什么是否可以在值为枚举类型的配置中创建列表?如果是,如何

从spring.net注入一个通用IList

您必须指定element-type:

<list element-type="Namespace.State, Assembly">
    <value>SUSPENDED</value>
    <value>HALTED</value>
</list>

其中Namespace是类的命名空间,Assembly则是包含枚举的程序集。

<list element-type="SandboxConsole.Device.Control.ApplicationEnumerations+State, SandboxConsole">
    <value>SUSPENDED</value>
    <value>HALTED</value>
</list>

ApplicationEnumerations+State,因为您试图访问内部类。

http://www.springframework.net/doc-latest/reference/html/objects.html#objects-通用集合值