Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在内核找到属性时注入属性_C#_.net_Ninject - Fatal编程技术网

C# 如何在内核找到属性时注入属性

C# 如何在内核找到属性时注入属性,c#,.net,ninject,C#,.net,Ninject,我有一个模块,当我的应用程序以以下代码启动时,我会通过内核加载它: IKernel kernel = new StandardKernel(); kernel.Load("*.dll"); 但在某些情况下,我不想将模块组件放在bin文件夹中,也不想使用该模块及其相应的功能。然后,我的consumer类中有使用[Inject]属性的属性。当Ninject找不到其模块时,我想为这些属性返回null。默认情况下,如果Ninject找不到依赖项,此代码将引发异常 using (IKernel kern

我有一个模块,当我的应用程序以以下代码启动时,我会通过内核加载它:

IKernel kernel = new StandardKernel();
kernel.Load("*.dll");

但在某些情况下,我不想将模块组件放在bin文件夹中,也不想使用该模块及其相应的功能。然后,我的consumer类中有使用
[Inject]
属性的属性。当Ninject找不到其模块时,我想为这些属性返回null。

默认情况下,如果Ninject找不到依赖项,此代码将引发异常

using (IKernel kernel = new StandardKernel())
{
    kernel.Load("*.dll");
    var someClass = kernel.Get<SomeClassWithDependency>();
    someClass.TryDoSomething();
}
public class SomeClassWithDependency
{
    public void TryDoSomething()
    {
        if (SomeType != null)
        {
            SomeType.DoSomething();
        }
    }

    [Inject, Optional]
    public ISomeType SomeType { get; set; }
}