この質問が正確に何であるかわかりません。
これが問題です。ソース コードを使用せずにアセンブリにパックして製品として出荷するフレームワークに取り組んでいるとします。フレームワークは最初から拡張性を念頭に置いて開発されています。つまり、一部のターゲット ドメインの詳細/データ/クラスは、フレームワークを参照するエンド ユーザー/アセンブリによって定義されます。これを有効にする方法の 1 つは、フレームワークでジェネリックを使用して、後ですべてを定義することです。ただし、ジェネリックが単一のクラスに導入されると、すべての依存/参照クラスとメソッドは、すべての正確な制約を使用してそれを再宣言する必要があります。単一のジェネリックを渡すことは大したことではありませんが、対処しなければならない場合、たとえば 8 つのジェネリックを処理する必要がある場合、物事はすぐに制御不能になります。これはまったく珍しいことではありません。フレームワークの小さなクラスごとに、すべてのクラスで同じである再宣言された型パラメーターを数行配置する必要があります。すべての(ほとんどの)クラスに同じジェネリック宣言を追加するある種の c++ のようなマクロを用意するだけで、手早く汚い解決策が得られるようです。ただし、C# にはマクロがないため、手動で行う必要があります。ここで問題になります。これらのパラメーターを大かっこから取り出して、アセンブリ (プロジェクト) レベルで一度宣言するにはどうすればよいでしょうか? 「public class Entity*」と書く必要がないように ただし、C# にはマクロがないため、手動で行う必要があります。ここで問題になります。これらのパラメーターを大かっこから取り出して、アセンブリ (プロジェクト) レベルで一度宣言するにはどうすればよいでしょうか? 「public class Entity*」と書く必要がないように ただし、C# にはマクロがないため、手動で行う必要があります。ここで問題になります。これらのパラメーターを大かっこから取り出して、アセンブリ (プロジェクト) レベルで一度宣言するにはどうすればよいでしょうか? 「public class Entity*」と書く必要がないように< TField> * { ... }" です。これは、TField が定義されており、それが表示されるたびに、クラスがアセンブリ レベルと同じ宣言を使用して暗黙的に認識していることを意味するためです。このような汎用アセンブリをリンクすることにより、開発者は次のことを行う必要があります。使用できるようになる前にすべての型引数を提供するか、一部のパラメーターがまだバインドされていない場合は、後で使用するためにそれらを再宣言します。
質問:
- このような状況に陥ったことがありますか?
- この機能があると便利だと思いますか?
- もしそうなら、あなたは現在それなしでどのように過ごしていますか?
- c# に取り組んでいる人向け: これを c# の新しいバージョンに追加する可能性はありますか?
ありがとうございました!
アップデート:
あまり詳細には触れたくありませんでしたが、お望みどおりにしました。わかりやすい例を作るのは難しいので、現在の状況を共有させてください。私はテキスト処理フレームワークに取り組んでおり、テキストをトークン化し、それに一致するすべての可能なパターンを持つコア ライブラリがあります。何も知らないのは、名詞や動詞などの品詞の扱い方です。幸いなことに、それを行うことができる別のアセンブリがあります。ここでの目標は、コア ライブラリのパターンを別のライブラリの品詞の知識で拡張することです。私が行った方法は、「CustomPattern」という名前のコアライブラリに特別なパターンを追加したことです。これは、任意のクラスによってパラメーター化され、何にでも置き換えることができます。私たちの場合、それは PartOfSpeach enum です。https://gist.githubでコードのパッセージを見てください。.
ここで質問です。コア ライブラリに TDetails ジェネリックが含まれないようにしつつ、任意のデータが付加されたカスタム パターンを使用できるようにする方法を教えてください。
ここでの唯一の要件は、現在のコードを厳密に型付けしておく必要があるということです。