Spring.Core.TypeMismatchException: невозможно преобразовать значение свойства типа Dictionary - PullRequest
0 голосов
/ 02 января 2012

Я изо всех сил пытаюсь решить проблему и буду очень признателен за помощь.

public interface ISolver<T>
{
        void Solve();
}

public class Solver : ISolve<IEntity>
{
  void Solve()
{
...code that solves the given problem
}
}

 public class Client : IClient<IEntity>
{

        public Dictionary<string, ISolver<IEntity>> Solvers { get; set; }
}

Все они являются частью решения пространства имен.

В конфигурации Spring.Net:

<object id="Client" type="solution.Client, solution">
<property name="Solvers">
      <dictionary key-type="string" value-type="solution.Solver, solution">
        <entry  key="SolverMp" value-ref="SolverMp"></entry>
      </dictionary>
    </property>
</object>

<object id="SolverMp" type="solution.Solver, solution">
</object>

Получено исключение:

Spring.Core.TypeMismatchException: невозможно преобразовать значение свойства типа [System.Collections.Generic.Dictionary`2 [[System.Строка, mscorlib, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089], [solution.Solver, решение, Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null]]] требуемого типа [System.Collections.Generic.Dictionary`2 [[System.String, mscorlib, Версия = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089], [solution.ISolver`1 [[solution.IEntity, solution, Версия = 1.0.0.0, Culture =нейтральный, PublicKeyToken = null]], решение, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]]] для свойства 'Solvers'.

Ответы [ 2 ]

3 голосов
/ 02 января 2012
<objects xmlns="http://www.springframework.net">
  <object id="Client" type="solution.Client, solution">
    <property name="Solvers">
      <dictionary key-type="string" value-type="solution.ISolver&lt;solution.IEntity&gt;, solution">
        <entry key="SolverMp" value-ref="SolverMp"></entry>
      </dictionary>
    </property>
  </object>
</objects>
1 голос
/ 02 января 2012

Как минимум одна проблема - эта запись в вашей конфигурации:

value-type="solution.Solver

Тип значения словаря Solvers:

ISolver<IEntity>>

И это то, на что жалуется исключение.

...