Methods 您可以使用方法注入或其他形式的注入来创建一个类的多个实例吗? 公共接口IFoo{} 公共类Foo:IFoo{} 公共密封类NinjaModule:ninject模块//在项目中正确配置 { 公共覆盖无效负载() { Bind.To.InTransientScope(); } } 公共类SomeOtherClass:ISomeOtherInterface { 公共SomeOtherClass(); 公共IFoo-GetFoo(IFoo-foo) { 返回foo; } public void GetFoos() { foreach(凡事都有var) { var localFoo=GetFoo(); localFoo.UniqueProperty=“我是唯一的”; _添加(localFoo); } } }

Methods 您可以使用方法注入或其他形式的注入来创建一个类的多个实例吗? 公共接口IFoo{} 公共类Foo:IFoo{} 公共密封类NinjaModule:ninject模块//在项目中正确配置 { 公共覆盖无效负载() { Bind.To.InTransientScope(); } } 公共类SomeOtherClass:ISomeOtherInterface { 公共SomeOtherClass(); 公共IFoo-GetFoo(IFoo-foo) { 返回foo; } public void GetFoos() { foreach(凡事都有var) { var localFoo=GetFoo(); localFoo.UniqueProperty=“我是唯一的”; _添加(localFoo); } } },methods,ninject,code-injection,Methods,Ninject,Code Injection,我需要我的代码看起来像那样 是的,我是个注射新手。我相当肯定我缺少一个基本原则 谢谢您的帮助。我认为最好的方法是使用工厂来创建不同的Foo实例。有了Ninject和工厂扩展,这很容易 public interface IFoo {} public class Foo : IFoo {} public sealed class NinjaModule : NinjectModule //Appropriately configured in project { public overr

我需要我的代码看起来像那样

是的,我是个注射新手。我相当肯定我缺少一个基本原则


谢谢您的帮助。

我认为最好的方法是使用工厂来创建不同的Foo实例。有了Ninject和工厂扩展,这很容易

public interface IFoo {}

public class Foo : IFoo {}

public sealed class NinjaModule : NinjectModule //Appropriately configured in project
{
    public override void Load()
    {
        Bind<IFoo>.To<Foo>.InTransientScope();
    }
}

public class SomeOtherClass : ISomeOtherInterface
{
    public SomeOtherClass();

    public IFoo GetFoo(IFoo foo)
    {
        return foo;
    }

    public void GetFoos()
    {
        foreach (var thing in everything)
        {
            var localFoo = GetFoo();
            localFoo.UniqueProperty = "I am unique";
            _fooList.Add(localFoo);
        }
    }
}
公共密封类NinjaModule:ninject模块//在项目中正确配置
{
公共覆盖无效负载()
{
绑定().To().InTransientScope();
Bind().ToFactory();
}
}
公共接口IFooFactory
{
ifoocreatefoo();
}
公共类SomeOtherClass:ISomeOtherInterface
{
私营食品厂;
公共SomeOtherClass(IFooFactory fooFactory)
{
this.fooFactory=fooFactory;
}
公共IFoo-GetFoo(IFoo-foo)
{
返回此.fooFactory.CreateFoo();
}
public void GetFoos()
{
foreach(凡事都有var)
{
var localFoo=GetFoo();
localFoo.UniqueProperty=“我是唯一的”;
_添加(localFoo);
}
}
}

这是个糟糕的问题。我发现这需要由控制这些实现的类在更高层实现。

foreach循环的目的是什么?您可以创建几个IFoo实例并将它们放入列表中。但似乎没有使用所有条目。或者你太简化了你的代码。这是一个糟糕的问题。我发现这需要由控制这些实现的类来实现。
public sealed class NinjaModule : NinjectModule //Appropriately configured in project
{
    public override void Load()
    {
        Bind<IFoo>().To<Foo>().InTransientScope();
        Bind<IFooFactory>().ToFactory();
    }
}

public interface IFooFactory
{
   IFoo CreateFoo();
}


public class SomeOtherClass : ISomeOtherInterface
{
    private IFooFactory fooFactory;

    public SomeOtherClass(IFooFactory fooFactory)
    {
        this.fooFactory = fooFactory;
    }

    public IFoo GetFoo(IFoo foo)
    {
        return this.fooFactory.CreateFoo();
    }

    public void GetFoos()
    {
        foreach (var thing in everything)
        {
            var localFoo = GetFoo();
            localFoo.UniqueProperty = "I am unique";
            _fooList.Add(localFoo);
        }
    }
}