Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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#_Inheritance_Unity Container - Fatal编程技术网

C# 我们可以将静态成员变量传递给构造函数来解析统一性吗?

C# 我们可以将静态成员变量传递给构造函数来解析统一性吗?,c#,inheritance,unity-container,C#,Inheritance,Unity Container,我有一个在类中注册的接口。 这个类继承了一个基类,我需要在调用它的构造函数时将参数传递给这个基类 In app.config <register type="IA" mapTo="A"> </register> objA=container.Resolve<IA>(); public Class B { public B(string text)

我有一个在类中注册的接口。 这个类继承了一个基类,我需要在调用它的构造函数时将参数传递给这个基类

In app.config
<register type="IA" mapTo="A">
      </register>
    

    objA=container.Resolve<IA>();
    
   public  Class B
    {
        public B(string text)
        {
        }
    }
    
   public  Class A : B , IA
    {
        static string text="hello";
        
        public A() : base(text)
        {
        }``
    }
app.config中的

objA=container.Resolve();
公共B级
{
公共B(字符串文本)
{
}
}
A类公众:B类,IA类
{
静态字符串text=“hello”;
公共A():基(文本)
{
}``
}
在构造函数中传递静态变量以解决统一性问题,这是一种好的做法吗`` 还有别的办法吗


注意:如果我想从类A之外传递参数,我将不得不在我的项目的许多其他部分中使用的接口IA中进行更改。

如果配置需要字符串,我将对构造函数进行重载,该构造函数采用一个
Options
参数,其中包含一个强类型对象中的所有配置:

public class Foo
{
    public Foo(FooOptions options)
    {
        //...
    }
}

public class FooOptions
{
    public string Text { get; set; }
}
然后可以注册选项的静态实例,该实例将传递给所有
Foo
实例。我不确定Unity语法,但它可能看起来像这样:

container.RegisterSingleton(new FooOptions { Text = "hello" });

如果配置需要字符串,我将重载构造函数,该构造函数接受一个
Options
参数,该参数在一个强类型对象中包含所有配置:

public class Foo
{
    public Foo(FooOptions options)
    {
        //...
    }
}

public class FooOptions
{
    public string Text { get; set; }
}
然后可以注册选项的静态实例,该实例将传递给所有
Foo
实例。我不确定Unity语法,但它可能看起来像这样:

container.RegisterSingleton(new FooOptions { Text = "hello" });