0

プラグインを使用するアプリケーションがあります。それらのいくつかを作成した後、コードの大きな塊があちこちで繰り返されていることがわかったので、スーパー「プラグインベース」を抽出したいと思います。

リファクタリングの前に、次の構造がありました。

以前の構造

リファクタリングの後、私は次のものを持っています:

現在の体制

現在、プラグイン エンジンにはplugin settingsタイプのプロパティ設定があり、プラグイン エンジン baseにはplugin settings baseタイプのプロパティ設定があるという事実をモデル化する方法が見つかりません。プラグインエンジンベースの設定プロパティがプラグインエンジンの設定プロパティの「キャスト」であることを宣言し、両方が同じプロパティであるという事実をモデル化する方法があると思います。

問題が十分に説明されているかどうかはわかりません。ご不明な点がございましたら、お気軽にお問い合わせください。

ありがとう。

4

2 に答える 2

1

ジェネリックを使用できます。ジェネリック基本クラスを作成し、ジェネリックパラメーター制約をタイプに指定しますPluginSettingsBase

abstract class PluginEngineBase<T>
   where T: PluginSettingsBase
{
   public abstract T Settings { get; set; }
}

クラスによってパラメータ化された基本クラスから継承しますPluginsSettings(したがって、から継承されPluginSettingsBaseます)

class PluginEngine : PluginEngineBase<PluginsSettings>
{
   public PluginSettings Settings { get; set; }
}

と同じPluginDataです。

于 2012-11-20T21:47:52.187 に答える
0

私が見つけたアプローチ:

基本クラス:

class PluginEngineBase
{
    public PluginSettingsBase Settings { get; set; }
}

継承者:

class PluginEngine : PluginEngineBase
{
    public PluginSettings Settings
    {
        get
        {
            return (PluginSettings)base.Settings;
        }
        set
        {
            base.Settings = value;
        }
    }
}
于 2012-11-20T22:02:58.890 に答える