Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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# DryIoc:将请求范围服务的代理注入singleton_C#_Dependency Injection_Dryioc - Fatal编程技术网

C# DryIoc:将请求范围服务的代理注入singleton

C# DryIoc:将请求范围服务的代理注入singleton,c#,dependency-injection,dryioc,C#,Dependency Injection,Dryioc,我有许多最终依赖于请求上下文的服务,但是,由于实例化它们的成本很高,我想用Reuse.Singleton注册它们。这意味着我需要向这些单例注入我的作用域服务的某种形式的代理 我发现我可以正常注册一个作用域服务a,然后将其作为Func注入,从而允许我通过调用注入的委托手动解析a,即 // DryIoC config private static ConfigureDI(...) { ... c.Register<A>(Reuse.InWebRequest); c

我有许多最终依赖于请求上下文的服务,但是,由于实例化它们的成本很高,我想用
Reuse.Singleton
注册它们。这意味着我需要向这些单例注入我的作用域服务的某种形式的代理

我发现我可以正常注册一个作用域服务
a
,然后将其作为
Func
注入,从而允许我通过调用注入的委托手动解析
a
,即

// DryIoC config
private static ConfigureDI(...)
{
    ...
    c.Register<A>(Reuse.InWebRequest);
    c.Register<B>(Reuse.Singleton);
    ...
}

// Scoped service
public class A 
{ 
    public object Foo() { ... }
}  

// Singleton service
public class B 
{ 
   private readonly Func<A> _a;

   public object Bar()
   {
       return _a().Foo();
   }
}
//DryIoC配置
专用静态配置DI(…)
{
...
c、 注册(重用.InWebRequest);
c、 寄存器(重用。单例);
...
}
//作用域服务
公共A类
{ 
公共对象Foo(){…}
}  
//单件服务
公共B级
{ 
专用只读功能;
公共对象栏()
{
返回_a().Foo();
}
}

这种方法似乎有效,但我想知道:有没有一种方法可以做到这一点而不必修改原始类?

这些问题通常归结为您是否可以在不使用DI库的情况下对它们进行建模。如果可以,那么复杂的DI库可以为您做到这一点。因此,问题是,您认为没有DI库它将如何工作,您能提供一个示例吗?这样的问题通常归结为您是否可以在没有DI库的情况下对它们进行建模。如果可以,那么复杂的DI库可以为您做到这一点。因此,问题是,您认为没有DI-lib它将如何工作,您能提供一个示例吗?