C# 静态库中的类如何访问应用程序中注册的类型?

C# 静态库中的类如何访问应用程序中注册的类型?,c#,unity-container,ioc-container,C#,Unity Container,Ioc Container,我们的应用程序模块使用Unity IoC容器根据接口注册具体类型,例如,我们应该使用哪个记录器 现有的静态库也会执行日志记录,但目前它对Unity没有任何依赖性,但问题是,当它针对应用程序构建时,它应该使用该模块的日志记录程序(因此会写入相同的日志文件,等等) 我如何才能做到这一点,使库不必仅与此特定应用程序一起工作,从而由应用程序控制使用哪个记录器?因为您已经在对该库进行更改,我的建议是使该库中的类成为非静态的,并使用构造函数注入来注入这些类所需的依赖项。@Steven那么每个类现在都传递了一

我们的应用程序模块使用Unity IoC容器根据接口注册具体类型,例如,我们应该使用哪个记录器

现有的静态库也会执行日志记录,但目前它对Unity没有任何依赖性,但问题是,当它针对应用程序构建时,它应该使用该模块的日志记录程序(因此会写入相同的日志文件,等等)


我如何才能做到这一点,使库不必仅与此特定应用程序一起工作,从而由应用程序控制使用哪个记录器?

因为您已经在对该库进行更改,我的建议是使该库中的类成为非静态的,并使用构造函数注入来注入这些类所需的依赖项。@Steven那么每个类现在都传递了一个
ILogger
ctor参数?这不正是Unity容器应该帮助解决的问题吗?如果每个类都依赖于
ILogger
,那么您已经陷入了一片混乱,这一点已经解释得很清楚了。DI容器无法帮助您解决有缺陷的设计,但它们确实会让您更清楚地知道您在哪里违反了坚实的原则。