問題タブ [extensibility]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
1452 参照

.net - プラグイン サポートの追加: 継承するインターフェイスまたは基本クラス?

.NET アプリケーションにプラグイン サポートを追加しています。基本クラスは私には理にかなっているように思えるので、人々はそれを継承して特定の呼び出しをオーバーライドしたり、デフォルトの機能を維持したり、いくつかの内部ヘルパー関数を使用したりできます。

継承するベース プラグイン クラスではなくインターフェイスを選択するのはなぜですか? どのデザインを選ぶべきか、またその理由を教えていただけますか?

0 投票する
1 に答える
119 参照

visual-studio - ファイルがプロジェクトに追加されたときに発生するイベントは何ですか?

新規または既存のファイルがプロジェクト (.vcproj または .csproj) に追加/プロジェクトから削除されたときに発生するイベントは何ですか?

実際には、追加または削除されたプロジェクト項目に関してプロジェクト構造を変更する可能性のあるすべてのイベントを処理したいと考えています。

これは、Visual Studio 用のアドインを作成するコンテキストにあります。調べられるように、少なくともイベント名を教えてもらえますか?

0 投票する
1 に答える
288 参照

visual-studio - アドインファイルの巨大なAboutIconDataブロック

Visual Studio用に生成された.addinファイルでは、AboutIconDataプロパティの下に非常に大きなバイナリデータのチャンクがあります。このデータが時間とともに増加し続ける理由と、安全に削除できるかどうかについて誰かが提案できますか?

0 投票する
1 に答える
122 参照

asp.net - asp.net デザイナー 設計されたページ タイプを取得する方法

Visual Studio 2008 で設計されたページの実際のタイプを Web コントロール内で調べたいと考えています。

私は WebFormsRootDesigner を取得できます。

aspx ページのファイル パス。

コントロールにファイルを解析させるのはやり過ぎなので、そのページの ProjectItem を取得したいのですが、これを行う方法が見つかりません。

そして、aspxページのprojectitemから、ページクラスを取得する方法がわかりません...

ページの種類に応じて、設計時に Web コントロールの動作が異なるようにします。

ありがとう

0 投票する
0 に答える
684 参照

java - 17年後、C ++ランタイムの拡張性を修正するには遅すぎますか?

1992年から1993年の時間枠は、C++にとって極めて重要で運命的なものでした。

'92 / '93の時間枠で、C++でコーディングされたAldusPageMakerのプラグインアーキテクチャに取り組みました。PageMakerは、MacOSとWindows間の移植性を支援するVAMPと呼ばれるC++OOPフレームワーク上に構築されました。

そこで、C++の機能を使用してプラグインアーキテクチャを構築しようとしました。これは、いわゆる脆弱な基本クラスの問題のため、C++クラスでは非常に問題があることが判明しました。

ジャーナルに掲載され、OOPSLA'93でリフレクションワークショップで発表した論文を書き始めました。ここで紹介した論文のPDF形式を読むことができます。

C ++ Evolvableクラスの時不変仮想メンバー関数ディスパッチ (ページを下に移動し、[表示]または[ダウンロード]をクリックします)

また、ポートランドで開催されたUsenixカンファレンスでBjarne Stroustrupと連絡を取り、数か月間彼と対話を続けました。そこで、彼は私に代わって脆弱な基本クラスの問題に対処する問題を支持しました。(残念ながら、当時は他の問題がより重要であると考えられていました。たとえば、承認を通じてRTTIを回避しようとしました。)

マイクロソフトはこの時点で、問題の実行可能な解決策と見なされていたWindowsプラットフォーム用のCOM/DCOMシステムを導入しました。C ++は、COMインターフェイスの定義に使用される抽象クラスを介してCOMの実装言語として使用できます。

ただし、最近の開発者はCOM / DCOM、特にCOMに基づくActiveXを避けています。(1994年に私はマイクロソフトで働き、残りの10年間は​​そこでC++とCOM/ DCOMを使用しました。テクノロジーの組み合わせは間違いなく行き止まりであると結論付けるようになりました。ここでその経験を参照します:効果的なエンタープライズの構築分散ソフトウェアシステム

この初期のC++の歴史とは対照的に、Steve Jobの会社であるNeXTは、90年代初頭にObjective Cを使用してプラグインアーキテクチャを考案しました。これは、NeXTステップフレームワークに不可欠でした。今日、それはAppleのコンピューターやiPhoneなどの重要なプラットフォーム上のMacOSXで活気に満ちています。

プラグインの問題を優れた方法で解決できるObjectiveCを提出します。

Javaのチャンピオンは、C ++よりも生産性が高い理由について、ガベージコレクションなどの要素を引用します。私はそれについて異議を唱えるつもりはありませんが、ObjectiveCはごく最近まで2.0でガベージコレクションを行っていませんでした。iPhoneでは、ガベージコレクションはまだ利用できません。それにもかかわらず、OSXプラグインアーキテクチャは完全に実行可能でした-完全にOOPのObjectiveCスタイルとC++OOPのメリットのためです。

興味深いことに、Javaは、あらゆるプラットフォームまたはソフトウェア開発コミュニティに存在する最も普及しているプラ​​グインアーキテクチャを構築するために使用されてきました。Eclipse IDEプラグインアーキテクチャは、そのようなアーキテクチャが進むにつれて、今では事実上伝説的であり、数年前にEquinoxOSGiモジュール管理レイヤーに組み込まれました。J2EEアプリサーバーは、EJBのプラグインアーキテクチャを10年間サポートしてきました。最近、注目すべきすべてのJ2EEアプリサーバーは、ランタイムバインド可能モジュールを管理するために同様にOSGiを組み込んでいます。SpringFrameworkとSpringBeanのランタイムバインド可能ユニットは、主にSpringBeanのバインドを管理するためのシステムの強度によりJ2EEを超えるまでに成長しました。

Javaコミュニティは、公式のモジュール管理標準を定義するのにまだ苦労していますが、現状では、Javaプラットフォームは、他のプログラミングプラットフォームよりも広くプラグイン機能を組み込んだソフトウェアアーキテクチャをサポートしています。

C#に比べて言語としてのJavaの弱点、および.NETの.NETアセンブリ標準でのモジュール実装はすでに強力ですが、Javaは、何らかの形式のプラグインを組み込んだ、広く使用されている日常のソフトウェアシステムの点でまだ光年先を進んでいます。建築。不思議なことに、Javaコミュニティは、これがエンタープライズ開発プラットフォームとしての継続的な成功の基盤であることを意識的にさえ認識していません。

私は個人的に、C++の脆弱な基本クラスの問題が最も致命的な欠陥であると考えています。

この問題がC++コミュニティとC++の作成者に取り上げられてから、17年が経過しましたが、今では対処するには遅すぎますか?

0 投票する
1 に答える
3102 参照

c# - IExtension:拡張可能なオブジェクトパターン:どのように機能しますか?

私はC#で(IExtension、IExtensibleObject)インターフェイスを使用してExtensibleオブジェクトパターンについて調べていました。日付をローカルからUTCに、またはその逆に変換する非常に簡単な例がありました。

出力:

現地時間:2009年4月13日11:09:19
UTC:2009年4月13日5:39:19午前
現地時間:2009年4月13日11:09:19AM
続行するには任意のキーを押してください。。。

だからそれはうまくいく、問題は:

IExtensionCollection.AddメソッドとIExtensionCollection.Detachメソッドがプログラムによって呼び出された場合、.Net Frameworkはどのように「Attach」と「Detach」を呼び出しますか?私がここに欠けている内部の詳細を記入してください。

0 投票する
1 に答える
2280 参照

c# - Visual Studio の拡張性、プログラムによるプロジェクトの作成

プログラムでテスト プロジェクトをソリューションに追加しようとしています。ただし、以下のコードを実行すると、「vhaSolution.GetProjectTemplate("TestProject.zip", "Csharp")」という行でファイル IO 例外が発生します。エラーは、「指定された言語は、インストールされているどのパッケージでもサポートされていません」ということを示しています。誰がこれを引き起こしているのか考えていますか?

0 投票する
2 に答える
9856 参照

visual-studio - Visual Studio 2008 プラグイン/アドイン開発 - はじめに

このスタックオーバーフローの質問に関連して、独自の Visual Studio 2008 プラグインを作成するにはどうすればよいですか?

MSDN の Visual Studio Developer Center を確認しましたが、情報量が圧倒的です。プロジェクトの種類はたくさんあり、どこから始めればよいかさえわかりません。

次の要件を満たすものを書きたい場合は、どこから調べればよいでしょうか。

  1. Visual Studio の「サービス」のように実行され、Visual Studio をポーリングして情報を取得し、Visual Studio イベントを処理できるプラグイン。
  2. VS からアクセスしたい情報は、現在開いているプロジェクト、開いているユーザー、その他のソリューション/プロジェクト ファイル ベースの情報などです。
  3. 処理できるようにしたいイベントは、ソリューション/プロジェクト/個々のファイルを開く/閉じる/編集する/作成する/削除するようなものです。
  4. また、ソリューションごとに VS との対話を処理できるようにしたいと考えています。そのため、ファイルとのやり取り、コードの編集だけでなく、メニューや IDE 自体とのやり取りなども処理したいと考えています。

これらと同様に、どこかにデータを保存できるようにしたいです。これは通常どこで行われますか?ソリューション ファイルにメタデータを追加できますか? または、この情報をデータベースの小さなローカル インスタンスに保存して、何らかの方法でソリューションに関連付けることは理にかなっていますか?

正しい方向へのプッシュが必要なだけですが、これは可能ですか? Visual Studio デベロッパー センターのどの部分に注目する必要がありますか? どの API をチェックアウトする必要がありますか?

乾杯!