我正在使用StructureMap:
在我的服务中注入一个全局设置界面,如Singletonpublic interface ISettings {
LoggerSettings Logger { get; }
} // ISettings
public class LoggerSettings {
public String Levels { get { return ConfigurationManager.AppSettings["Logger.Levels"]; } }
public const String Report = "team@xyz.com";
} // LoggerSettings
public class Settings : ISettings {
public LoggerSettings Logger { get; private set; }
} // Settings
作为SM配置,我有:
For<ISettings>().Singleton().Use<Settings>();
我可以注入这个对象,但是当我检查注入的对象时,它的属性Logger为null ...我怎样才能让SM初始化对象属性?
我错过了什么吗?
答案 0 :(得分:1)
您需要Settings
类上具有LoggerSettings
参数的构造函数,以便StructureMap可以在创建时设置Logger属性。
如果由于某种原因不能/不想使用构造函数注入,则需要在Logger
类公共Settings
属性和configure property injection上设置setter StructureMap。
TL; DR :make Settings
如下所示:
public class Settings : ISettings {
public Settings(LoggerSettings logger)
{
Logger = logger;
}
public LoggerSettings Logger { get; private set; }
}