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" });