.net core Castle Windsor类型化工厂设施由于其命名空间而似乎找不到接口

.net core Castle Windsor类型化工厂设施由于其命名空间而似乎找不到接口,.net-core,castle-windsor,typed-factory-facility,.net Core,Castle Windsor,Typed Factory Facility,我在温莎城堡有一家打字厂 container.Register(Component.For<IMyTypeFactory>().AsFactory()); 我的IMyTypeFactory如下所示: public interface IMyTypeFactory { IMyType GetIMyType(IMyParameter myParameter); } public MyType( IOneProperlyResolvedType oneProperlyReso

我在温莎城堡有一家打字厂

container.Register(Component.For<IMyTypeFactory>().AsFactory());
我的IMyTypeFactory如下所示:

public interface IMyTypeFactory 
{
  IMyType GetIMyType(IMyParameter myParameter);
}
public MyType(
  IOneProperlyResolvedType oneProperlyResolvedType, 
  IAnotherProperlyResolvedType anotherProperlyResolvedType, 
  IMyParameter myParameter)
        {
            this.oneProperlyResolvedType = oneProperlyResolvedType;
            this.anotherProperlyResolvedType = anotherProperlyResolvedType;
            this.myParameter = myParameter;
        }
MyType构造函数如下所示:

public interface IMyTypeFactory 
{
  IMyType GetIMyType(IMyParameter myParameter);
}
public MyType(
  IOneProperlyResolvedType oneProperlyResolvedType, 
  IAnotherProperlyResolvedType anotherProperlyResolvedType, 
  IMyParameter myParameter)
        {
            this.oneProperlyResolvedType = oneProperlyResolvedType;
            this.anotherProperlyResolvedType = anotherProperlyResolvedType;
            this.myParameter = myParameter;
        }

我能看出这是多么令人困惑。它与名称空间无关

您的工厂方法名为
GetMyClass
,因此Windsor会查找名为
MyClass
的组件,该组件恰好是您的类名称空间

要关闭此功能,请将工厂注册更改为
.AsFactory(新的DefaultTypedFactoryComponentSelector(getMethodsResolveByName:false))


或者重命名该方法。

非常感谢。(我的解决方案是将该方法重命名为“Create”,这无论如何都不会让人感到困惑。)事后看来,我很幸运,在我的最小可行代码中使用了相同的命名约定,而不是在我的生产代码中使用了相同的命名约定,否则您将无法提供帮助。我被弄糊涂了。再次感谢,祝你有一个愉快的一天!我认为命名混乱是温莎开发人员应该避免的事情,但那不是我的事。事后看来,我同意这不是最好的默认
public interface IMyTypeFactory 
{
  IMyType GetIMyType(IMyParameter myParameter);
}
public MyType(
  IOneProperlyResolvedType oneProperlyResolvedType, 
  IAnotherProperlyResolvedType anotherProperlyResolvedType, 
  IMyParameter myParameter)
        {
            this.oneProperlyResolvedType = oneProperlyResolvedType;
            this.anotherProperlyResolvedType = anotherProperlyResolvedType;
            this.myParameter = myParameter;
        }