2010-06-09 7 views
0

를 충족하기 위해 잘못된 구성 요소를 사용하여 I가 윈저 XML에서 다음과 같은 구성 요소 매핑 : 나는 DataContext의 컨테이너를 요청할 때성 윈저 종속성

<component 
    id="dataSession.DbConnection" 
    service="System.Data.IDbConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    type="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    lifestyle="custom" 
    customLifestyleType="MyCompany.Castle.PerOperationLifestyle.PerOperationLifestyleManager, MyCompany.Castle"> 
    <parameters> 
    <connectionString>server=(local);database=MyCompany;trusted_connection=true;application name=OperationScopeTest;</connectionString> 
    </parameters> 
</component> 

<component 
    id="dataSession.DataContext" 
    service="System.Data.Linq.DataContext, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" 
    type="MyCompany.BusinessLogic.MyCompanyDataContext, MyCompany.BusinessLogic" 
    lifestyle="custom" 
    customLifestyleType="MyCompany.Castle.PerOperationLifestyle.PerOperationLifestyleManager, MyCompany.Castle"> 
    <parameters> 
    <connection>${dataSession.DbConnection}</connection> 
    </parameters> 
</component> 

그러나, 실제로는 연결 문자열을 필요로하는 생성자를 사용하여, ${dataSession.DbConnection}IDbConnection인데도 불구하고

왜 그런가요? Windsor가 올바른 생성자를 사용하는 방법은 무엇입니까?

답변

3

필자가 아는 한 Windsor는 같은 이름이지만 다른 유형의 인수가 같은 여러 생성자간에 해결할 방법이 없습니다. 여기서 문제는 DataContext 생성자 모두가 같은 이름의 단일 인수를가집니다.

내가 일하면서 윈저가 만족할 수있는 생성자가 하나만있는 DataContext 클래스를 파생시켜 문제를 해결했습니다.

public class MyCompanyDataContextAdapter : MyCompanyDataContext 
{ 
    public MyCompanyDataContextAdapter(IDbConnection connection) 
     : base(connection) 
    { } 
}