質問

ちょっとした夜のプロジェクトでは、.NETアプリケーションで使用できる検証コンポーネントを作成して、オブジェクト、入力パラメーター、および事後条件の通常の退屈な検証を行いたいと思います。

最初のアイデアは、この検証セットアップロジックをすべてXML構成ファイルにダンプし、コードに含めることを希望するユーザーに流動的なインターフェイスを提供することでした。

実際に使用できるものを配信したいので、特殊なDSL(ドメイン固有言語)を提供することを考えました。問題は、これを行うためにどのツールを使用する必要があるかです。

正規表現を使用して手動で解析することを考えました。しかし、個人的にはもっと...使いやすいものが欲しいです。

では、何を提案しますか?

役に立ちましたか?

解決

特にDSLを見る場合は、 ANTLR プロジェクトをご覧ください。過去に私の会社で使用してきました。

他のヒント

。Net 4.0の機能の1つ、コードコントラクト

したがって、推奨されるツールはVS.Net 2010です。

DSlの問題は、単独では効果的ではないことです。実際のソフトウェアの作成に役立つようにするには、ホスト言語内にDSLを埋め込むことができる必要があります。たとえば、Linqの動作方法と単なるSQLを比較してください。別の良い例は、VBのXMLリテラル機能です。どちらも、汎用PLで実際のコードを記述し、より単純な宣言型DSLコードと織り交ぜることができます。

結果は、スタンドアロンのSQLや単純なXMLエディターよりもはるかに強力なものです。

これの欠点は、残念ながら、C#もVBもメタプログラミング機能を提供しないため、メインストリームの.net開発者がそれを行う唯一の方法は、独自の言語を構築することです。これが楽しみのためだけにやっていることであれば、モノC#コンパイラを修正して、興味のある機能を言語に追加できるかもしれません。別の選択肢は、ルビーを試すことです。それはあなたが多くの狂気で逃げることができる柔軟な構文を持っています。しかし、個人的には、ハッキングされたC#アプローチを好むでしょう。

Booでのドメイン固有言語の構築(BooはCLR言語です。概念はC#に継承する必要があります)。サンプルプロジェクトは、シンプルステートマシンです。

Microsoftの Oslo をご覧ください。必要なものですが、DSLパーサーを構築して文法を指定し、文法に基づいてデータを解析できるクラスライブラリを生成できることを知っています。

" M"の詳細言語とその使用方法は、こちらです。

なぜこれまで行ったのですか?ジェネリックと流interfaceなインターフェイスを使用して開始します。簡単に始めて、いくつかの制作を通してそれを実行します。流fluentなインターフェイスを扱う場合に摩擦が大きすぎる場合は、DSLの使用を検討してください。

Visual StudioのDSLツールを試すことができます。

http://irony.codeplex.com/

のIronyプロジェクトをご覧ください。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top