.NET には、関連するオブジェクトを登録する正規のメカニズムがありますか? (つまり、.NET のコンポーネント カテゴリ?)
バックグラウンド
多数の COM オブジェクトがあり、それらはすべて関連しており、すべてが同じインターフェイスを実装しており、これらすべてのオブジェクトを登録する中心的な場所が必要な場合は、Component Categoriesを使用します。
HKCR\Component Categories
関連する COM オブジェクトの束を登録できる場所です。私のソフトウェアがプラグインをサポートしている場合、「カテゴリ」を作成します。
HKCR\Component Categories\{1628B80E-E735-481C-8EDA-FC13D92B5F36}
409: REG_SZ = "Ian's super-cool application plugins"
次に、自分のプラグインを私のアプリケーションに登録したい人は誰でも、Implemented Categoriesというエントリを作成してカテゴリを実装することに言及する必要があります。
HKCR\{EC05174F-F824-4888-9FDC-EE33080917DE}
\ProgID
default = "Stackoverflow.IansSuperCoolApp.1"
\Implemented Categories
\{1628B80E-E735-481C-8EDA-FC13D92B5F36}
そして今、私はそれらを見つける場所を知っています。たとえば、Microsoft には数十個の画像変換フィルターがあり、すべてがカテゴリの下に登録されています{C501EDBE-9E70-11D1-9053-00C04FD9189D}
。
- DXImageTransform.Microsoft.CrBlinds.1
- DXImageTransform.Microsoft.Iris.1
- DXImageTransform.Microsoft.AlphaImageLoader.1
- DXImageTransform.Microsoft.RadialWipe.1
- ...
シェル拡張機能、SQL Server 競合リゾルバーもあります。必要なすべてのクラスを見つける方法が必要なときはいつでも。
たった1つの実装
では、関連する COM オブジェクトを登録する正規の場所であることを除けば、特別なことは何もありません。Component Categories
誰もがクラスを登録する独自の方法を自由に作成できます。しかし、COM を発明した人たちは、それを行うための「その」場所を作ることにしました。Microsoft は、それを使用するのに役立つ APIも提供しています。
しかし、必要な機能を含むクラスを登録する独自のメカニズムを宣言することを止めるものは何もありません。
- 私は自分自身を作成することができました
HKCR\Ian's Supercool Application plugins
- ProgID を宣言する XML ファイルを作成できます
COM オブジェクトをグループに登録する場合は、タスク用に設計された場所を使用してください。
しかし、.NET はどうでしょうか。
数十個の .NET アセンブリ (*.dll) があるとどうなりますか。それらを登録するにはどうすればよいですか?COM コンポーネント カテゴリは実際には使用できません。これらは COM オブジェクトではない (つまり、COM オブジェクトでも COM 呼び出し可能ラッパーでもない) ためです。それらはマネージ アセンブリです。
.NET にアセンブリ カテゴリを登録する正規のメカニズムはありますか?
注:最初の行の後にすべての読み取りを停止できます。残りはただの毛羽立ちです。