我创建了一个服务,它从不同的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有效。
使用基本枚举然后传递继承的枚举会很好,但枚举不允许继承
答案 0 :(得分:2)
除了GetTextAsync
之外,还要在名为GetLanguages
的接口中添加另一个返回Language[]
的方法,以便调用者可以在运行时向API询问其支持的语言。这样做的另一个好处是,将来可以轻松扩展您的API,而无需对服务端进行任何修改。