首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Ninject获取对象的实例

使用Ninject获取对象的实例是指在使用Ninject依赖注入框架时,如何创建和获取对象的实例。Ninject是一个开源的依赖注入框架,它可以帮助开发者更轻松地实现依赖注入,并且可以在不同的环境中使用。

在Ninject中,可以使用以下方法获取对象的实例:

  1. 使用ToMethod方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().ToMethod(context => new MyImplementation());
  1. 使用ToConstant方法注册对象实例:
代码语言:csharp
复制
IMyInterface myInstance = new MyImplementation();
kernel.Bind<IMyInterface>().ToConstant(myInstance);
  1. 使用ToProvider方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().ToProvider<MyProvider>();
  1. 使用ToSelf方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<MyImplementation>().ToSelf();
  1. 使用InSingletonScope方法注册单例对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().InSingletonScope();
  1. 使用InTransientScope方法注册瞬态对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().InTransientScope();
  1. 使用InRequestScope方法注册请求范围对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().InRequestScope();
  1. 使用InThreadScope方法注册线程范围对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().InThreadScope();
  1. 使用InNamedScope方法注册命名范围对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().InNamedScope("myScope");
  1. 使用WhenInjectedInto方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WhenInjectedInto<MyConsumer>();
  1. 使用WithConstructorArgument方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgument("arg1", "value1");
  1. 使用WithPropertyValue方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValue("PropertyName", "PropertyValue");
  1. 使用WithParameters方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().ToMethod(context => new MyImplementation(context.Parameters.First()));
  1. 使用WithCircularDependencies方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithCircularDependencies();
  1. 使用OnActivation方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().OnActivation(instance => instance.Initialize());
  1. 使用OnDeactivation方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().OnDeactivation(instance => instance.Dispose());
  1. 使用When方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().When(request => request.Target != null && request.Target.Member.Name == "MyMethod");
  1. 使用WithMetadata方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithMetadata("key", "value");
  1. 使用WithAnyAttribute方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithAnyAttribute();
  1. 使用WithAttribute方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithAttribute(new MyAttribute());
  1. 使用WithAttributes方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithAttributes(new MyAttribute(), new MyAttribute2());
  1. 使用WithKernel方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithKernel(new MyKernel());
  1. 使用WithParentScope方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParentScope();
  1. 使用WithScope方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithScope(new MyScope());
  1. 使用WithUniqueId方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithUniqueId("myUniqueId");
  1. 使用WithConstructorArgumentFromContext方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromContext("arg1", context => context.Parameters.First());
  1. 使用WithPropertyValueFromContext方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromContext("PropertyName", context => context.Parameters.First());
  1. 使用WithParametersFromContext方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromContext(context => new ConstructorArgument("arg1", context.Parameters.First()));
  1. 使用WithConstructorArgumentFromMethod方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromMethod("arg1", context => context.Parameters.First());
  1. 使用WithPropertyValueFromMethod方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromMethod("PropertyName", context => context.Parameters.First());
  1. 使用WithParametersFromMethod方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromMethod(context => new ConstructorArgument("arg1", context.Parameters.First()));
  1. 使用WithConstructorArgumentFromProvider方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromProvider("arg1", context => new MyProvider());
  1. 使用WithPropertyValueFromProvider方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromProvider("PropertyName", context => new MyProvider());
  1. 使用WithParametersFromProvider方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromProvider(context => new MyProvider());
  1. 使用WithConstructorArgumentFromResolutionRoot方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromResolutionRoot("arg1", context => context.Kernel.Get<MyService>());
  1. 使用WithPropertyValueFromResolutionRoot方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromResolutionRoot("PropertyName", context => context.Kernel.Get<MyService>());
  1. 使用WithParametersFromResolutionRoot方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromResolutionRoot(context => new ConstructorArgument("arg1", context.Kernel.Get<MyService>()));
  1. 使用WithConstructorArgumentFromService方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromService("arg1", context => context.Kernel.Get<MyService>());
  1. 使用WithPropertyValueFromService方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromService("PropertyName", context => context.Kernel.Get<MyService>());
  1. 使用WithParametersFromService方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromService(context => new ConstructorArgument("arg1", context.Kernel.Get<MyService>()));
  1. 使用WithConstructorArgumentFromSyntax方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromSyntax("arg1", context => context.Kernel.Get<MyService>());
  1. 使用WithPropertyValueFromSyntax方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromSyntax("PropertyName", context => context.Kernel.Get<MyService>());
  1. 使用WithParametersFromSyntax方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromSyntax(context => new ConstructorArgument("arg1", context.Kernel.Get<MyService>()));
  1. 使用WithConstructorArgumentFromType方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromType("arg1", typeof(MyService));
  1. 使用WithPropertyValueFromType方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromType("PropertyName", typeof(MyService));
  1. 使用WithParametersFromType方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromType(typeof(MyService));
  1. 使用WithConstructorArgumentFromValue方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromValue("arg1", "value1");
  1. 使用WithPropertyValueFromValue方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromValue("PropertyName", "value1");
  1. 使用WithParametersFromValue方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromValue(new ConstructorArgument("arg1", "value1"));
  1. 使用WithConstructorArgumentFromValues方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromValues("arg1", new[] { "value1", "value2" });
  1. 使用WithPropertyValueFromValues方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromValues("PropertyName", new[] { "value1", "value2" });
  1. 使用WithParametersFromValues方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromValues(new ConstructorArgument("arg1", new[] { "value1", "value2" }));
  1. 使用WithConstructorArgumentFromName方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromName("arg1", "name1");
  1. 使用WithPropertyValueFromName方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromName("PropertyName", "name1");
  1. 使用WithParametersFromName方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromName(new ConstructorArgument("arg1", "name1"));
  1. 使用WithConstructorArgumentFromTypeOf方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromTypeOf("arg1", typeof(MyService));
  1. 使用WithPropertyValueFromTypeOf方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithPropertyValueFromTypeOf("PropertyName", typeof(MyService));
  1. 使用WithParametersFromTypeOf方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithParametersFromTypeOf(typeof(MyService));
  1. 使用WithConstructorArgumentFromTypeOfName方法注册对象实例:
代码语言:csharp
复制
kernel.Bind<IMyInterface>().To<MyImplementation>().WithConstructorArgumentFromTypeOfName("arg1", typeof(MyService), "name1");
  1. 使用WithPropertyValueFromTypeOfName方法注册对象实例:
代码语言:csharp
复制

kernel

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

10分4秒

第10章:对象的实例化内存布局与访问定位/102-对象实例化的几种方式

10分59秒

第10章:对象的实例化内存布局与访问定位/105-对象的内存布局

5分23秒

Spring-011-获取容器中对象信息的api

7分46秒

第10章:对象的实例化内存布局与访问定位/106-对象访问定位

22分6秒

第10章:对象的实例化内存布局与访问定位/104-对象创建的六个步骤

7分1秒

073-尚硅谷-Scala核心编程-类与对象的应用实例.avi

12分53秒

day28_反射/12-尚硅谷-Java语言高级-获取Class实例的4种方式

12分53秒

day28_反射/12-尚硅谷-Java语言高级-获取Class实例的4种方式

12分53秒

day28_反射/12-尚硅谷-Java语言高级-获取Class实例的4种方式

6分11秒

第10章:对象的实例化内存布局与访问定位/103-字节码角度看对象的创建过程

12分13秒

day12_面向对象(中)/15-尚硅谷-Java语言基础-子类对象实例化的全过程

12分13秒

day12_面向对象(中)/15-尚硅谷-Java语言基础-子类对象实例化的全过程

领券