1

次の投稿を参照した後でも、ジェネリック依存関係を登録するためのユニティを取得するのにまだ苦労しています。

私のコードは、実装されていないという点でより単純でGenericRepository<T>あり、次のとおりです。

public interface ISerializer<T> where T : class
{
    ...
}

public class WorkflowSerializer : ISerializer<XmlFormWorkflow>
{
...
}

public class WorkflowManager
{
    private readonly ISerializer<XMLFormWorkflow> _serializer;

    public WorkflowManager(ISerializer<XmlFormWorkflow> serializer)
    {
         _serializer = serializer;
    }
}

私が使用している設定ファイルは次のようになります。

<unity>
  <alias alias="ISerializer" type="Common.ISerializer`1, Common" />
  <alias alias="WorkflowSerializer" type="Common.WorkflowSerializer, Common" />
  <alias alias="XMLFormWorkflow" type="Common.XMLFormWorkflow, Common" />
  <container>
    <register type="ISerializer[XMLFormWorkflow]" mapTo="WorkflowSerializer" />
  </container>
</unity>

私が得ているエラーは次のとおりです。

Resolution of the dependency failed, type = "Business.WorkflowManager", name = "(none)".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The current type,     Common.ISerializer`1[Common.XMLFormWorkflow], is an interface and cannot be constructed.     Are you missing a type mapping?
-----------------------------------------------
At the time of the exception, the container was:
  Resolving parameter "serializer" of constructor Business.WorkflowManager(Common.ISerializer`1[[Common.XMLFormWorkflow, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] serializer)
  Resolving Common.ISerializer`1[Common.XMLFormWorkflow],(none)

エイリアス内にタイプを含めてみました

<alias alias="ISerializer" type="Common.ISerializer`1[[Common.XMLFormWorkflow, Common]], Common" />

しかし、それもうまくいかないようです。WorkflowSerializer自分の中に強く入力することはできWorkflowManagerますが、それは避けたいことです。

簡単なことを見落としていないことを願っています。ティア

4

1 に答える 1

0

WorkflowManagerクラスが存在する名前空間を確認するのを怠っていたようです。ReSharper は、ファイルの名前空間を、ファイルが存在するそれぞれのフォルダーに関連付けます。私の場合、問題は次のとおりです。

namespace Common.Implementations
{
    public class WorkflowSerializer : ISerializer<XMLFormWorkflow>
    {
      ...
    }
}

名前空間からを削除すると.Implementations、unity は依存関係を正常に構築できました。

私の脳のおならが長期的にあなたの誰かを助けることを願っています.

于 2013-02-21T16:37:21.013 に答える