如何更好地实施

时间:2017-04-09 17:08:08

标签: c# oop enums

我创建了一个服务,它从不同的API中获取一些信息。每个API都使用语言列表,有些语言是常见的,有些是具体的API。我使用通用方法创建一个接口来调用API。

public interface IOCR
{
    Task<OCRResult> GetTextAsync(string fileUrl, Language language);
}

其中语言类似于:

public enum Language
{
    Chinese_Simplified,
    Chinese_Traditional,
    Danish,
    Dutch,
    ....
}

但是第一个API也有俄语,例如第二个API德语。如何正确实现?

选项1: 创建所有语言的完整列表。但是客户端应用程序不知道该语言是否受支持。

选项2: 传递简单的字符串而不是枚举。但是我们应该知道哪些字符串对于具体API有效。

使用基本枚举然后传递继承的枚举会很好,但枚举不允许继承

1 个答案:

答案 0 :(得分:2)

除了GetTextAsync之外,还要在名为GetLanguages的接口中添加另一个返回Language[]的方法,以便调用者可以在运行时向API询问其支持的语言。这样做的另一个好处是,将来可以轻松扩展您的API,而无需对服务端进行任何修改。