Ninject 绑定问题
Ninject Binding Issue
我有一个 wcf 服务应用程序,我刚刚实现了 ninject 库。 ninject 网站中有以下示例:
public class Samurai {
public IWeapon Weapon { get; private set; }
public Samurai(IWeapon weapon)
{
this.Weapon = weapon;
}
}
public class WarriorModule : NinjectModule
{
public override void Load()
{
this.Bind<IWeapon>().To<Sword>();
}
}
我有class这样的。但问题是如何创建 Samurai
class 的实例?它的构造函数有参数(IWeapon
),但参数是绑定的Sword
或不同的class。当我想创建 Samurai
class 的实例时,编译器需要 IWeapon
类型参数。在我的模块 class(如 WarriorModule
)中,我已经定义了它的绑定。如何将参数(或其他方式)传递给 Samurai
class 的构造函数?
试试这个
class Program
{
static void Main(string[] args)
{
IKernel kernel = new StandardKernel(new WarriorModule());
var samurai = kernel.Get<ISamurai>();
}
}
public interface ISamurai
{
}
public class Samurai : ISamurai
{
public IWeapon Weapon { get; private set; }
public Samurai(IWeapon weapon)
{
this.Weapon = weapon;
}
}
public interface IWeapon
{
}
public class Sword : IWeapon
{
}
public class WarriorModule : NinjectModule
{
public override void Load()
{
this.Bind<ISamurai>().To<Samurai>();
this.Bind<IWeapon>().To<Sword>();
}
}
我刚刚知道怎么做了。无需创建 ISamurai 接口。在战士模块中:
public class WarriorModule : NinjectModule
{
public override void Load()
{
Bind<IWeapon>().To<Sword>();
Bind<Samurai>().ToSelf();
}
}
要创建 Samurai 实例:
var samurai = kernel.Get<Samurai>();
我有一个 wcf 服务应用程序,我刚刚实现了 ninject 库。 ninject 网站中有以下示例:
public class Samurai {
public IWeapon Weapon { get; private set; }
public Samurai(IWeapon weapon)
{
this.Weapon = weapon;
}
}
public class WarriorModule : NinjectModule
{
public override void Load()
{
this.Bind<IWeapon>().To<Sword>();
}
}
我有class这样的。但问题是如何创建 Samurai
class 的实例?它的构造函数有参数(IWeapon
),但参数是绑定的Sword
或不同的class。当我想创建 Samurai
class 的实例时,编译器需要 IWeapon
类型参数。在我的模块 class(如 WarriorModule
)中,我已经定义了它的绑定。如何将参数(或其他方式)传递给 Samurai
class 的构造函数?
试试这个
class Program
{
static void Main(string[] args)
{
IKernel kernel = new StandardKernel(new WarriorModule());
var samurai = kernel.Get<ISamurai>();
}
}
public interface ISamurai
{
}
public class Samurai : ISamurai
{
public IWeapon Weapon { get; private set; }
public Samurai(IWeapon weapon)
{
this.Weapon = weapon;
}
}
public interface IWeapon
{
}
public class Sword : IWeapon
{
}
public class WarriorModule : NinjectModule
{
public override void Load()
{
this.Bind<ISamurai>().To<Samurai>();
this.Bind<IWeapon>().To<Sword>();
}
}
我刚刚知道怎么做了。无需创建 ISamurai 接口。在战士模块中:
public class WarriorModule : NinjectModule
{
public override void Load()
{
Bind<IWeapon>().To<Sword>();
Bind<Samurai>().ToSelf();
}
}
要创建 Samurai 实例:
var samurai = kernel.Get<Samurai>();