C# 如何将AddComponentInstance转换为Register
AddComponentInstance的值为:C# 如何将AddComponentInstance转换为Register,c#,castle-windsor,C#,Castle Windsor,AddComponentInstance的值为: WindsorContainer.Kernel.AddComponentInstance<T>(typeof(T), instance); WindsorContainer.Kernel.AddComponentInstance(typeof(T),instance); 这是过时的 它的替代品是: WindsorContainer.Register(Component.For<IClassParameters>().I
WindsorContainer.Kernel.AddComponentInstance<T>(typeof(T), instance);
WindsorContainer.Kernel.AddComponentInstance(typeof(T),instance);
这是过时的
它的替代品是:
WindsorContainer.Register(Component.For<IClassParameters>().ImplementedBy<ClassParameters>());
WindsorContainer.Register(Component.For().ImplementedBy());
然而,我有一个门面:
public static void AddInstance<T>(object instance)
{
_iocManager.WindsorContainer.Kernel.AddComponentInstance<T>(typeof(T), instance);
}
publicstaticvoidaddinstance(对象实例)
{
_iocManager.WindsorContainer.Kernel.AddComponentInstance(typeof(T),instance);
}
我看不出如何使用Register方法代替AddComponentInstance。这是错误的:
_iocManager.WindsorContainer.Register(Component.For<T>().ImplementedBy<T>().Instance(instance));
\u iocManager.WindsorContainer.Register(Component.For().ImplementedBy().Instance(Instance));
我应该使用什么?container.Register(Component.For().Instance(new Foo());
container.Register(Component.For<Foo>().Instance(new Foo());
答案是:
public static void AddInstance<T>(T instance) where T : class
{
_iocManager.WindsorContainer.Register(Component.For<T>().Instance(instance));
}
publicstaticvoidaddinstance(T实例),其中T:class
{
_iocManager.WindsorContainer.Register(Component.For().Instance(Instance));
}
注意,方法签名迫使编译器将T作为一个类,从而作为一个Ref变量No,这不起作用