C#域特定实现:Unity和泛型

时间:2016-05-16 07:44:07

标签: c# generics unity-container

我在我的应用程序中创建了包含域特定信息的组件,例如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;组; }     }

有没有人对如何解决这个问题有任何想法?

提前致谢

0 个答案:

没有答案