我有一个 Shutting-Yard 算法的实现,我正试图将它清晰地集成到我们的框架中。目前,我将它们全部打包到一个具有简单公共接口的类中。
namespace MathematicalParser {
public class ExpressionParser {
public ExpressionParser(string expression, List<string> variables);
public double GetNumericValue(Dictionary<string,double> variableValues);
}
}
在这个类里面有很多辅助类、辅助枚举、静态变量等来将不同的名称映射到函数。所有这些都是私有的,因此图书馆的用户无需担心。
为了提高代码的可维护性,我试图将逻辑上不相关的代码分离到它们自己的类中,但是这些类在 ExpressionParser 之外没有任何意义,所以我想限制它们对命名空间 MathematicalParser 的可见性(仅包含 ExpressionParser)。
如何在 C# 中最好地实现这一点,internal 关键字仅适用于程序集,而 private 不能在命名空间中使用。