"嵌入"一个集会' A'在多个库中,使消费者无法看到A,但任何库都可以

时间:2015-02-21 02:09:54

标签: c# libraries

我有一组可以独立(组合)使用的库,但是它们中的每一个都共享某些功能,我希望在单个核心中定义这些功能。图书馆。

我不希望这些功能对消费者可见,如果我要求消费者直接引用Core作为先决条件,他们就会这样做。

有没有办法让每个图书馆都能访问Core的单个副本,这种方式不会让Core对消费者可见?就像,我可以以某种方式嵌入'核心是否使用了任何库,而内存中没有多个Core副本?

Lib.Core

(component-visible) class Utility
{
    int CalculateSomething(int input) { }
}

Lib.Abc

using Lib.Core;

public class Foo()
{
    public Foo(int seed)
    {
        Value = Core.Utility.CalculateSomething(seed);
    }

    public int Value { get; private set; }
}

Lib.Xyz

using Lib.Core;
...

消费

using Lib.Abc;
using Lib.Xyz;

public class Bar
{
    public int GetValue(int seed)
    {
        return new Foo(seed).Value;
    }
}

1 个答案:

答案 0 :(得分:1)

使用Visual Studio,您可以添加" Core"将代码文件作为链接文件(在Add按钮上添加> Existing>下拉列表)。这将允许" Core"的代码。要编译到每个库中,仍然为" Core"提供单点维护。

缺点是,如果添加新功能,则必须重新编译引用" Core"文件。但这不应该太糟糕 - 作为一个单独的程序集,无论如何都必须编译和分发核心。