フレームワークに明確に統合しようとしているShunting-Yardアルゴリズムの実装があります。現在、私はそれをすべて、単純なパブリックインターフェイスを備えたクラスにパックしています。
namespace MathematicalParser {
public class ExpressionParser {
public ExpressionParser(string expression, List<string> variables);
public double GetNumericValue(Dictionary<string,double> variableValues);
}
}
このクラスの中には、さまざまな名前を関数にマップするためのヘルパークラス、ヘルパー列挙型、静的変数などがたくさんあります。これらはすべてプライベートであるため、ライブラリのユーザーには関係ありません。
コードの保守性を向上させるために、論理的に無関係なコードを独自のクラスに分離しようとしていますが、これらのクラスはExpressionParserの外部では意味がないため、名前空間MathematicalParserへの可視性を制限したいと思います。 (これにはExpressionParserのみが含まれます)。
これをc#でどのように実現するのが最善ですか。内部キーワードはアセンブリでのみ機能し、プライベートは名前空間では使用できません。