C# 以非泛型方式绑定Ninject工厂扩展后出现异常

C# 以非泛型方式绑定Ninject工厂扩展后出现异常,c#,dependency-injection,ninject,ninject-extensions,C#,Dependency Injection,Ninject,Ninject Extensions,我有以下代码: public interface ILogging { ... } public interface ILoggingFactory { ILogging CreateLogging(); } public class MailSender : IMailSender { [Inject] public MailSender(ILoggingFactory loggingFactory) { ... } } 当我试图将我的工厂约束为 Bind&l

我有以下代码:

public interface ILogging
{ ... }

public interface ILoggingFactory
{
  ILogging CreateLogging();
}

public class MailSender : IMailSender
{
  [Inject]
  public MailSender(ILoggingFactory loggingFactory)
  {
    ...
  }
}
当我试图将我的工厂约束为

Bind<ILoggingFactory>().ToFactory();
我有一个残疾例外

无法将“Castle.Proxies.ObjectProxy”类型的对象强制转换为 “我的图书馆.我的工厂”

尝试加载使用logginFactory的邮件发件人时:

kernel.Get<IMailSender>();
注释:出于项目原因,我希望以非通用方式绑定工厂。

如果您使用

Bind(myType).ToFactory();
Ninject为工厂类型
对象创建代理对象,而不是
ILoggingFactory
。您必须另外指定工厂类型:

this.kernel.Bind(typeof(ILoggingFactory)).ToFactory(typeof(ILoggingFactory));
Bind(myType).ToFactory();
this.kernel.Bind(typeof(ILoggingFactory)).ToFactory(typeof(ILoggingFactory));