C#领域特定实现:统一和泛型

C#领域特定实现:统一和泛型,c#,generics,unity-container,C#,Generics,Unity Container,我已在应用程序中创建了包含特定于域的信息的组件,例如ImportManager、ExportManager等 我希望每个组件都作为一个独立的单元来运行,但是我使用泛型时有点不对劲——当与依赖注入(unity)一起使用时。 我在库中定义了以下基本对象 public class ImportManager : IImportManager { [Dependency] public IImportSettings Settings {get;set;} } 这里的想法是我定义一个实

我已在应用程序中创建了包含特定于域的信息的组件,例如ImportManager、ExportManager等 我希望每个组件都作为一个独立的单元来运行,但是我使用泛型时有点不对劲——当与依赖注入(unity)一起使用时。 我在库中定义了以下基本对象

public class ImportManager : IImportManager
{
    [Dependency]
    public IImportSettings Settings {get;set;}
}
这里的想法是我定义一个实现标准功能的基类。 然后,我创建了一个特定于客户端的实现,它稍微改变了标准行为。此类在不同程序集中有自己的实现和设置,如下所示:

public class CustomImportManager : ImportManager, ICustomImportManager
{
}
此实现的不同之处在于,我希望将ICCustomSettings加载到CustomImportManager中,而不是ISettings。 我可以在引导程序中注册依赖项,它可以正常加载,但是每次在CustomImportManager中使用它时,我都必须强制转换设置对象。 或者,我可以在IImportManager上定义一个通用参数:

public interface IImportManager<TSettings> where TSettings: ISettings
{
    [Dependency]
    public TSettings Settings {get; set}
}
公共接口IImportManager,其中TSettings:ISettings
{
[依赖性]
公共设置设置{get;set}
}
不幸的是,这将要求我将泛型参数添加到将此接口定义为属性的每个类中,从而导致类具有大量泛型参数。 在下面的例子中,facade可能根据其需求实现10+个组件,这意味着我必须为每个组件定义一个TObject,这也使得它很难使用自己。 公共类门面 { [依赖项]IImportManager导入管理器{get;set;} }

有人知道我该怎么解决这个问题吗

提前谢谢