C# 获取模块名称或标识
对于我的应用程序,我试图编写一个配置控制器,以加载和保存某些模块的设置。为此,我将使用一个INI文件,其中节名称将表示模块名称(或其他标识),以及由键表示的值 我在引导程序中注册了控制器,并使用构造函数中的接口在适当的类中进行注入。但是,我不希望每次需要获取或设置值时都输入模块名,因此我尝试使用调用方信息来找出调用该方法的模块(或类),但这显然不起作用(返回空字符串) 有没有其他方法可以实现我的目标 引导程序:C# 获取模块名称或标识,c#,unity-container,prism,C#,Unity Container,Prism,对于我的应用程序,我试图编写一个配置控制器,以加载和保存某些模块的设置。为此,我将使用一个INI文件,其中节名称将表示模块名称(或其他标识),以及由键表示的值 我在引导程序中注册了控制器,并使用构造函数中的接口在适当的类中进行注入。但是,我不希望每次需要获取或设置值时都输入模块名,因此我尝试使用调用方信息来找出调用该方法的模块(或类),但这显然不起作用(返回空字符串) 有没有其他方法可以实现我的目标 引导程序: protected override void ConfigureConta
protected override void ConfigureContainer()
{
base.ConfigureContainer();
Container.RegisterType<IConfig, ConfigController>(new ContainerControlledLifetimeManager());
}
protected override void ConfigureContainer()
{
base.ConfigureContainer();
RegisterType(新的ContainerControlledLifetimeManager());
}
配置界面:
public interface IConfig
{
string[] GetSettings(string caller = "");
void Set<T>(string setting, T value, string caller = "") where T : class;
T Get<T>(string setting, string caller = "") where T : class;
}
公共接口IConfig
{
字符串[]获取设置(字符串调用者=”);
void Set(字符串设置,T值,字符串调用者=”),其中T:class;
T Get(字符串设置,字符串调用者=”),其中T:class;
}
调用方参数的使用容易出错。您有许多选择来避免它:
依赖项
属性:
Container.Register<IConfig, ConfigController>("module1",
new InjectionConstructor("module1"))
.Register<IConfig, ConfigController>("module2",
new InjectionConstructor("module2"));
class Module1 {
public Module1([Dependency("module1")] IConfig config) {... }
}
调用方参数的使用容易出错。您有许多选择来避免它:
依赖项
属性:
Container.Register<IConfig, ConfigController>("module1",
new InjectionConstructor("module1"))
.Register<IConfig, ConfigController>("module2",
new InjectionConstructor("module2"));
class Module1 {
public Module1([Dependency("module1")] IConfig config) {... }
}
我决定使用第一个建议,它就像一个魅力!仍在尝试在boostrapper中注册控制器,而不是在模块本身中注册,但在初始化之前似乎无法在DirectoryModuleCatalog中获取模块。无论如何,非常感谢,这肯定让我回到正轨:)我决定使用第一个建议,它就像一个魅力!仍在尝试在boostrapper中注册控制器,而不是在模块本身中注册,但在初始化之前似乎无法在DirectoryModuleCatalog中获取模块。无论如何,非常感谢,这确实让我回到了正轨:)