雖然學習統一(在C#DI框架),我遇到其中一個類有ClassB的統一解決循環依賴
class ClassA : IClassA
{
...
[Dependency]
public IClassB ClassB
{
get { return _classB; }
set
{
if (value == null) throw new ArgumentNullException("value");
_classB = value;
}
}
的setter和其他具有的ClassA的
一個構造函數注入的情況來class ClassB : IClassB
{
...
[InjectionConstructor]
public ClassB(IClassA classA)
{
_classA = classA;
}
}
我無法在容器中正確解析兩個類。
var container = new UnityContainer();
container.RegisterType<IClassB, ClassB>();
container.RegisterType<IClassA, ClassA>();
IClassA classA = new ClassA();
var instance = container.Resolve<ClassA>();
instance.DoSomethingFromClassB();
log.Info("Constructor Injection");
var instanceB = container.Resolve<ClassB>();
instanceB.DoSomethingFromClassA();
這給了我一個堆棧溢出異常
我試圖解決這個不同的排序,但它似乎沒有工作。
我這個可行或我只是在浪費我的時間。這裏究竟發生了什麼。
感謝..我想我明白了,我可以解決這兩個A和B C. – jtkSource 2014-09-04 15:57:41
是的,你可以有ç決心A和B.這是一個常見的模式,以及 - 有擁有兩個相關類的「容器」或「作曲家」。不要太注意流行語/專業術語。 ;) – Haney 2014-09-04 16:00:54