C#共享项目的最佳方法,但仅公开所需的方法

时间:2018-09-19 01:29:56

标签: c# interface shared-libraries

我有一个Visual Studio解决方案,其中包含两个Web API项目和一些共享或公用项目。

  • WebAPI_1(大API)
  • WebAPI_2(非常小的API)
  • 数据存储库
    • SecurityRepository.cs
  • 数据接口
    • ISecurityRepository.cs
  • 服务
    • SecurityService.cs
  • 实用程序

WebAPI_2项目将使用SecurityService.cs中的某些方法,但将使用近50种方法中的5种。

SecurityService.cs内部使用Dependency Injection

中的ISecurityRepository调用方法

因为在引用项目时会公开完整的DLL,WebAPI_2是否有一种方法只能看到将要使用的5种方法,而没有办法看到其他45种方法?

另外,因为使用了Dependency Injection,所以我在想也许只用WebAPI_2 SecurityService将要使用的方法来创建其他接口。但是同样的问题是,整个Data.Interface项目都将被引用。

正因为如此,我不想结束每个项目有2个项目。

更新:不知道在这种情况下是否可以使用InternalsVisibleTo,但可以在方法级别使用。

赞赏任何建议或最佳实践。

1 个答案:

答案 0 :(得分:0)

如果您具有每个API的源代码,请将它们分组为一个程序集,将所有内容标记为内部,然后创建一个公共API以便将其公开给外部使用者。

我建议使用点网模糊处理工具。 C#源代码太容易进行逆向工程。如果存在盗窃问题,请使用C或C ++进行编程,并将托管包装器暴露给C#。除此之外,还可以使用硬件加密设备即时运行/解密程序。