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);
}
}
}