プラグインでの種類の宣言について

投稿者:通りすがり 投稿日:2018/07/02(Mon) 20:59:13 No.2143

どんな感じになるか、WPFの基本的な部品をプラグインにして試そうとしています。
その中で、以下は可能でしょうか?可能な場合、どのように継承or属性を使えばよいでしょうか?

・ウィンドウ部品のように、共通部分を大きく定義した基底の種類の作成。
・Formsでの、ツールバーの部品のようなに、いくつかの部品で共通した機能がある場合に、それを一括して扱える種類の作成。
・クラスツリーの継承階層ごとに対応する種類を定義して、うまく振り分けられるかどうか(現状では該当する部品はなさそう?)(UIEelemntと、Controlと、ContetControlと・・・と、直接のプロパティやメソッドのみ定義した種類を作って、活用可能か?)

よろしくお願いします。

Re: プラグインでの種類の宣言について

投稿者:ゆうと 投稿日:2018/07/07(Sat) 16:59:15 No.2147

こんにちは。

> どんな感じになるか、WPFの基本的な部品をプラグインにして試そうとしています。
> その中で、以下は可能でしょうか?可能な場合、どのように継承or属性を使えばよいでしょうか?
> ・ウィンドウ部品のように、共通部分を大きく定義した基底の種類の作成。
> ・Formsでの、ツールバーの部品のようなに、いくつかの部品で共通した機能がある場合に、それを一括して扱える種類の作成。
> ・クラスツリーの継承階層ごとに対応する種類を定義して、うまく振り分けられるかどうか(現状では該当する部品はなさそう?)(UIEelemntと、Controlと、ContetControlと・・・と、直接のプロパティやメソッドのみ定義した種類を作って、活用可能か?)

基本的には、プロデル種類にしたい.NETクラスを継承したクラスを作り、
IProduireClassインタフェースを実装することで、プロデルプラグイン用に種類を定義できます。
(それを継承した派生クラスもプロデルの種類として定義することが可能です)

ただ、.NETクラスがsealedクラスになっていてIProduireClassを実装できない場合や、
質問に挙がっているような、すでに定義された.NETクラスの基底クラスをプロデル種類として扱いたい場合には
Produire.ClassWarpper<T>クラスを使用してください。
既存の.NETクラスのプロデル種類用のラッパーを作ることができます。

定義については、ラッパー用の独立した種類クラスを作り、ClassWarpper<T>継承します。
ラッパーを定義すると、プロデル上で「作る」文でTクラスから派生するクラスインスタンスを生成した場合に、このラッパーインスタンスも生成され、ラッパーを基底種類のように扱うことができます。

[メインスレッド, 対応型(typeof(XXXBase))]
public class XXX基底 : ClassWarpper<XXXBase>
{
}

この点に関しては長期にわたって試行錯誤していますので
今後挙動が変わる可能性もあります。
現時点での仕様ということで理解してください。

Re^2: プラグインでの種類の宣言について

投稿者:通りすがり 投稿日:2018/07/08(Sun) 11:06:33 No.2148

回答ありがとうございます。早速、いろいろ試してみようとおみます。

> この点に関しては長期にわたって試行錯誤していますので
> 今後挙動が変わる可能性もあります。
> 現時点での仕様ということで理解してください。

帖地しました。あまり互換性にこだわると、バージョンアップの際に構造変更が
難しくなりますので、この辺は割り切るしかないと思っています。
可能ならば、エンドユーザがエラーメッセージ等から、理由が把握できれば
良いのですが、とりあえず、plugin側を開発時点のでの本体側のバージョンを
明記しておく形にしようかと思います。

▲ページの先頭へ

- WebForum -