Newbe.Claptrap 0.3.7がリリースされ、FluentAPIが自動的に生成されます。
コンテンツを更新する
当初、0.3でマッパーまたは検証のいずれかを導入したいと考えていました。しかし、フォローアップ作業をより適切に実行するには、より高いレベルの抽象化を完了する必要があることがわかりました。
したがって。バージョン0.3では、考えさせられると同時に喜びに満ちた、クールで斬新な機能が完成しました。
状態図に基づいて、設計されたFluentAPIを自動的に生成します。
詳細な説明は非常に長く、次の記事を参照して表示できます。
「私は絵を描きました、そしてFluentAPIはそれを自分で生成しました」
プロジェクト指導
Newbe.ObjectVisitorは、開発者が最も簡単で効率的な方法で通常のクラスのすべての属性にアクセスするのに役立ちます。達成するために:検証、マッピング、収集およびその他の操作。
たとえば、コードにはそのような単純なクラスがあります。
var order = new OrderInfo();
このクラスのすべての属性と値を印刷したい場合は、リフレクションを使用して以下を完了できます:
用( VAR pInfoは で typeof演算(ORDERINFO)。 GetPropertiesの()) {コンソール。WriteLineに( $ " { pInfoは。名}:{ pInfoは。GetValueメソッド(オーダー)} "); }
このライブラリを使用すると、次の方法で同じ効果を得ることができます。
//静的拡張メソッドとは何か.Vを呼び出し ます// order var visitor = orderのvisitorオブジェクトを取得します。V(); ビジター。ForEach(コンテキスト=>{ VARの名前=文脈。名、 VaRの値=文脈。値; コンソール。WriteLineに( $ " {名}:{値} "); })。実行(); // 1行の 順序にすることもできます。V()。ForEach(C=> コンソール。WriteLineに( $ " { C。名}:{ C。値} "))。実行(); //またはクイックスタイルオーダーを使用します。FormatToString();
では、なぜこれを行う必要があるのでしょうか。
- 速いから!このライブラリは式ツリーを使用して実装されているため、リフレクションを直接使用するよりも10倍高速です。
- 読みやすいから!このライブラリを通じて、チェーンAPIと命名メソッドを使用してデリゲートを作成できるため、コードはハードコードされたものと同じ読み取り可能な効果を実現できます。
- よりスケーラブルだから!このクラスライブラリを使用すると、クラスのすべてのプロパティに簡単にアクセスできます。したがって、次のような多くのことを行います。モデルを検証するためのバリデーターの作成、ログへの出力を回避するために機密データを含む可能性のあるいくつかの属性の変更、AutoMapperと同様のオブジェクトマッパーの作成。パフォーマンスの向上など。
GitHubプロジェクトアドレス:https://github.com/newbe36524/Newbe.ObjectVisitor
Giteeプロジェクトのアドレス:https://gitee.com/yks/Newbe.ObjectVisitor