5

一部のコードを Castle 2.5.2 から 3.0 に移動しています。次のような規則に基づいていくつかのことを行う一連の定義済み登録 (私のブート コード内) があります。

container.Register
(
    AllTypes.FromAssemblyInDirectory( new AssemblyFilter( "." ) )
        .IncludeNonPublicTypes()
        .Where( t => conventions.IsViewModel( t ) && !conventions.IsExcluded( t ) )
        .WithService.Select( ( type, baseTypes ) => conventions.SelectViewModelContracts( type ) )
        .Configure( r =>
        {
                    r.Properties( PropertyFilter.IgnoreAll );

            if( conventions.IsShellViewModel( r ) )
            {
                r.LifeStyle.Is( LifestyleType.Singleton );
            }
            else
            {
                r.LifeStyle.Is( LifestyleType.Transient );
            }
        } )
);

Windsor 2.5.2 では ComponentRegistration クラスに ServiceType プロパティがあり、3.0 には Services プロパティがありますが、「内部保護」されています。

私の規約処理は、どれがサービスであるかを知る必要があるという事実に依存しています。

どうすればその情報を入手できますか?

.m

4

2 に答える 2

0

私は今日同じことを経験していました。以下のように解決しました。これは、いくつかの規則に従っているため機能します。それは良い解決策ではないように感じますが...

.Configure(x => x.Named("I"+x.Implementation.Name))
于 2013-02-19T12:06:15.147 に答える
0

.WithServiceSelect はあなたのニーズを満たしませんか?

于 2012-12-20T13:15:05.760 に答える