2013-01-10 63 views
1

版本:C#4.0,Spring.Net 1.3.2,3.6.1 RhinoMocks負載MockReposity對象通過彈簧

鑑於這兩個接口:

public interface IDivisionSelectView 
{ 
    // ... 
} 

public interface ILoginView 
{ 
    IDivisionSelectView DivisionSelectView { get; } 

    // ... 
} 

我和春天嘗試。 Net使用Rhino.Mocks.MockRepository.GenerateMock<>()工廠創建代理對象ILoginView,該對象的DivisionSelectView屬性自動設置爲IDivisionSelectView代理(使用同一工廠)。這裏的春天XML:

<object id="IDivisionSelectView" 
     type="Rhino.Mocks.MockRepository, Rhino.Mocks" 
     factory-method="GenerateMock&lt;[Asm.Ns.IDivisionSelectView, Asm]>" 
     singleton="false"> 
    <constructor-arg name="argumentsForConstructor"> 
    <list element-type="System.Object, mscorlib"> 
    </list> 
    </constructor-arg> 
</object> 

<object id="ILoginView" 
     type="Rhino.Mocks.MockRepository, Rhino.Mocks" 
     factory-method="GenerateMock&lt;[Asm.Ns.ILoginView, Asm]>" 
     singleton="false"> 
    <constructor-arg name="argumentsForConstructor"> 
    <list element-type="System.Object, mscorlib"> 
    </list> 
    </constructor-arg> 
    <property name="DivisionSelectView" ref="IDivisionSelectView"> 
    </property> 
</object> 

這裏的調用C#代碼:

IApplicationContext ctx = new XmlApplicationContext(
    "assembly://Asm/Asm/spring.xml"); 
ContextRegistry.RegisterContext(ctx); 

ILoginView view = ctx.GetObject("ILoginView") as ILoginView; 

這是我得到的錯誤:

Spring.Objects.Factory.ObjectCreationException was unhandled by user code

Message=Error creating object with name 'ILoginView' defined in 'assembly [Asm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], resource [Asm.spring.xml] line 14' : Initialization of object failed : 'DivisionSelectView' node cannot be resolved for the specified context [Castle.Proxies.ILoginViewProxy4fa9c3fa65ca497bb09ce6358d876e4d].

這可能嗎?

回答

0

ILoginView上的DivisionSelectView屬性沒有setter。

+0

這是由設計。我不再使用'Rhino.Mocks'作爲這個東西,當我發佈這個問題時,我可能沒有完全理解所涉及的所有事情。現在我只是簡單地模擬getter來返回一個Spring載入的對象。然而,所提出的問題基本上與你所建議的有關 - 如果可以在沒有公共setter的情況下用Spring注入該對象。 – wes