我只有Ninject IOC的经验。
我正在转换为Caliburn.Micro进行WPF开发。喜欢它到目前为止。我已经开始使用他们的MEF样本并且喜欢灵活性。
无法弄清楚如何将此工作代码从Ninject绑定到Caliburn.Micros SimpleContainer。
kernel.Bind<Func<ISessionFactory>>().ToMethod(c =>
() => Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard
.Dialect<ImpactMsSqlCeDialect>()
.ConnectionString(String.Format("Data Source={0}", "c:\\AppDB.sdf")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ChildMap>())//.ExportTo(@"C:\fnh\"))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ClassMap>()) //.ExportTo(@"C:\fnh\")
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ClassTypeMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<CustomerMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<EmployeeMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<PunchcardMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<PunchcardTypeMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<PunchMap>())
//.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
#if DEBUG
.BuildConfiguration().SetInterceptor(new SqlStatementInterceptor())
#else
#endif
.BuildSessionFactory()).InSingletonScope();
我迷路了,所以我甚至不想提供我尝试过的任何尝试。
答案 0 :(得分:0)
查看您的代码,看起来您正试图以Func<>
委托的形式注册工厂方法或工厂。
可以使用SimpleContainer
扩展方法向Handler<TService>(Func<SimpleContainer, object> handler)
注册工厂或工厂方法,如SimpleContainer类的 documentation 所述。
正如您所看到的,使用此方法,您可以注册一个接受容器本身的Func<>
,以防您想要提取任何可能参与构建您传递给{{的服务类型的实例实现的依赖项。 1}}。
因此,在您的情况下,您的代码可能会变成以下内容:
Hander<TService>
如果这对您不起作用,请告诉我。