gpt4 book ai didi

c# - .NET 应用程序 - 如何隐藏依赖库的实现?

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:00 24 4
gpt4 key购买 nike

这可能是 this 的重复项问题,但我不想采用建议的解决方案,即使用 Web 服务。

场景如下:

1) 我想向客户公开一个类库。我们将其命名为“MyClassLibrary”。

2) “MyClassLibrary”项目的同一解决方案中还有两个库“Library1”和“Library2”。

3) “Library1”在“Library2”中引用,“Library2”在“MyClassLibrary”中引用。

4) “MyClassLibrary”中没有直接引用“Libray1”。

我想要什么?

“MyClassLibrary”的客户端不能访问“Library1”中的类和方法。有可能吗?如果我为“MyClassLibrary”创建 nuget 包,它将包含“Library1”(以及“Library2”)的 dll。因此,使用该 dll,客户端可以轻松访问“Library1”(以及“Library2”)中的内容。我怎样才能避免这种情况?我希望我的客户能够仅从“MyClassLibrary”访问所需的功能,而不是“Library1”(也许还有“Library2”)的实现。如何实现?

最佳答案

如果您想让您的客户不那么方便地访问您的代码,您可以使用访问说明符来阻止他这样做。例如,您可以使用 InternalsVisibleTo属性来隐藏您的实现,或者将其全部放在一个程序集中并使其大部分私有(private)。

不过,这只是为了防止他误用。

如果其中包含您不想让他知道的 secret ,您绝不能将其交给他。一种选择是仅提供 Web 服务的接口(interface),并在您的位置运行具有您的 secret 的实际服务。如果您将程序集交给他,无论保护、混淆或以其他方式隐藏得多么好,您的 secret 都会公开。

关于c# - .NET 应用程序 - 如何隐藏依赖库的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com