0
ああ!これは非常に奇妙な問題です。私はこれらの2つのタイプを登録するつもりですが、うまくいくものはありません。ユニティタイプでジェネリックタイプを登録する
<unity>
<typeAliases>
<typeAlias alias="IEqualityComparer`1"
type="System.Collections.Generic.IEqualityComparer`1, mscorlib" />
<typeAlias alias="singleton"
type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
<typeAlias alias="EqualityComparer`1"
type="System.Collections.Generic.EqualityComparer`1, mscorlib" />
</typeAliases>
<containers>
<container>
<types>
<register type="IEqualityComparer`1"
mapTo="EqualityComparer`1">
<lifetime type="singleton" />
</register>
</types>
</container>
</containers>
</unity>
そして、これは私のコントローラです:コントローラを解決するとき
public class MyController : MyExtendedController {
private readonly IEqualityComparer<int> _fakeComparer;
public ResourcesController(IEqualityComparer<int> fakeComparer) {
_fakeComparer = fakeComparer;
}
}
、例外はUnityがスローされます。
Resolution of the dependency failed, type = "MyController", name = "(none)".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The type EqualityComparer`1 cannot be constructed. You must configure the container to supply this value.
-----------------------------------------------
At the time of the exception, the container was:
Resolving MyController,(none)
Resolving parameter "fakeComparer" of constructor MyController(System.Collections.Generic.IEqualityComparer`1[[int, mscorelib]] fakeComparer)
Resolving System.Collections.Generic.EqualityComparer`1[int, mscorelib],(none) (mapped from System.Collections.Generic.IEqualityComparer`1[int, mscorelib], (none))
任意の提案をいただければ幸いです;更新)
私は、configファイルから設定を読み込む/設定に問題を持っていません。私はUnityによって登録されたタイプを解決することに問題があります。私は自分のジェネリックインターフェイス/クラスでこの問題をテストしています。しかし、私はIEqualityComparer/EqualityComparerを仕事にすることはできません。 – Sadegh
"System.Collections.Generic.IEqualityComparer'1、mscorlib"は単純化のため、実際のエイリアス定義は次のようなものです。 "System.Collections.Generic.IEqualityComparer'1、mscorlib、Version = 4.0.0.0、Culture = neutral、 PublicKeyToken = b77a5c561934e089 " – Sadegh
私は参照してください。私は私の答えを更新しました。 – onof