次の投稿を参照した後でも、ジェネリック依存関係を登録するためのユニティを取得するのにまだ苦労しています。
私のコードは、実装されていないという点でより単純で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
ますが、それは避けたいことです。
簡単なことを見落としていないことを願っています。ティア