Autofac - 动态实例化:手动传递构造函数

问题描述 投票:0回答:1

我在 AutoFac 中使用动态实例化:

   public class X: I_X
   {
      public X(String p1, String p2)
      {
          ...
      }
   }

   public class A: I_A
   {
      public A(Func<String, String, I_X> x_Factory)
      {
         I_X my_x = x_Factory("one", "two");
         ...
      }
   }

Autofac 按预期解决了这个问题。

但是假设我要在一个 DLL 中使用此代码,该代码也被其他没有 AutoFac 支持的项目并行使用:我需要如何为“A”的构造函数准备参数“x_Factory”并传递它,以便它可以工作?

   var manual_x_Fac = <what has to be done?>

   var a_object = new A(manual_x_Fac)

如果有人能帮助我,我会很高兴。谢谢你

c# autofac instantiation .net-4.8
1个回答
0
投票

您只需创建一个函数,例如使用 lambda 表达式:

var manual_x_Fac = (string s, string s1) => new X(s, s1);
var a_object = new A(manual_x_Fac);

如果内联参数,那就更方便了:

var a_object = new A((s, s1) => new X(s, s1));
© www.soinside.com 2019 - 2024. All rights reserved.