C# - 简化界面

ebb*_*ebb 1 c#

有可能以某种方式简化界面吗?目标是为将要使用它的用户提供降噪的API.

一个例子可能是界面IFoo定义了25个方法,我只想向用户公开其中的5个,我将如何以巧妙和优雅的方式做到这一点?

Ste*_*ung 7

你不能.根据定义,接口在所有方法上都是公共的.这就是它被称为合同的原因.

尝试将其拆分为多个接口:

  IBaseFoo (5 methods)
  IFoo : IBaseFoo  (20 more methods)
Run Code Online (Sandbox Code Playgroud)

这是它的常用方法.但是,除非您将IFoo作为私有接口,否则您无法阻止用户表单了解您的其他20种方法.

然后你编写一个包装类,它只是向用户公开IBaseFoo.可以将IFoo直接转换为IBaseFoo以返回给用户.