我有一组可以独立(组合)使用的库,但是它们中的每一个都共享某些功能,我希望在单个核心中定义这些功能。图书馆。
我不希望这些功能对消费者可见,如果我要求消费者直接引用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;
}
}
答案 0 :(得分:1)
使用Visual Studio,您可以添加" Core"将代码文件作为链接文件(在Add按钮上添加> Existing>下拉列表)。这将允许" Core"的代码。要编译到每个库中,仍然为" Core"提供单点维护。
缺点是,如果添加新功能,则必须重新编译引用" Core"文件。但这不应该太糟糕 - 作为一个单独的程序集,无论如何都必须编译和分发核心。