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

.WithServiceSelect 不能满足您的需求吗?

于 2012-12-20T13:15:05.760 回答
0

我今天也遇到了同样的事情。像下面这样解决它,因为我们遵循一些约定,所以它很有效。虽然感觉不是很好的解决方案...

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