下面的代码工作正常,并成功为类 DummyComponnent 创建一个实例。
但是当我更改工厂方法名称CreatDummyComponnent()
时出现问题
除了GetDummyComponnent()
或除 Creat 之外的任何其他内容作为方法名称的开头,请AnyThingComponent
抛出异常。工厂方法是否有任何指定命名规则?
using System;
using Castle.Facilities.TypedFactory;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
namespace AsFactoryImplementation
{
public interface IDummyComponnentFactory
{
IDummyComponnent CreatDummyComponnent();
// void Relese(IDummyComponnent factory);
}
public interface IDummyComponnent
{
void Show();
}
public class DummyComponnent:IDummyComponnent
{
public DummyComponnent()
{
Console.WriteLine("we are working here");
}
public void Show()
{
Console.WriteLine("just testing this for better performance");
}
}
class Program
{
static void Main(string[] args)
{
var container = new WindsorContainer();
container.AddFacility<TypedFactoryFacility>();
container.Register(Component.For<IDummyComponnent>().ImplementedBy<DummyComponnent>().Named("FirstConnection"),
Component.For<IDummyComponnentFactory>().AsFactory());
var val = container.Resolve<IDummyComponnentFactory>();
var iDummy = val.CreatDummyComponnent();
iDummy.Show();
Console.WriteLine("OK its done ");
Console.ReadLine();
}
}
}
答案 0 :(得分:0)
除了以Get。
开头之外,你应该可以使用任何东西在Factory上启动方法名称如果您从Get开始,它将尝试按名称而不是按界面解析组件。 那么在你的例子中可行的是:
var iDummy = val.GetFirstConnection();
祝你好运,Marwijn。