我在我的应用程序中创建了包含域特定信息的组件,例如ImportManager,ExportManager等 我希望每个组件都可以作为一个独立的单元运行,但是当我使用泛型时,我会稍微松一口气 - 当与依赖注入(统一)一起使用时。 我在库中定义了以下基础对象。
public class ImportManager : IImportManager
{
[Dependency]
public IImportSettings Settings {get;set;}
}
这里的想法是我定义了一个实现标准功能的基类。 然后,我创建一个特定于客户端的实现,稍微改变标准行为。该类具有自己的实现和设置,在不同的程序集中实现如下:
public class CustomImportManager : ImportManager, ICustomImportManager
{
}
与此实现的不同之处在于我希望将ICustomSettings加载到CustomImportManager中 - 而不是ISettings。 我可以在我的引导程序中注册依赖项,它会加载正常,但是每次我在CustomImportManager中使用它时我都必须转换设置对象。 或者,我可以在IImportManager上定义一个通用参数:
public interface IImportManager<TSettings> where TSettings: ISettings
{
[Dependency]
public TSettings Settings {get; set}
}
不幸的是,这将要求我将泛型参数添加到定义此接口的每个类,作为导致具有大量通用参数的类的属性。 在下面的示例中,Facade可能会根据其要求实现10个以上的组件,这意味着我必须为每个组件定义一个TObject - 这也使得自己很难使用它。 公共课门面 { [依赖] IImportManager ImportManager {get;组; } }
有没有人对如何解决这个问题有任何想法?
提前致谢