次のクラスがあります。
// abstract
abstract class Module
{
public Options Params;
}
abstract class Options { }
// implementation
class MyModule : Module
{
public new MyOptions Params = new MyOptions();
}
class MyOptions : Options
{
public string Param1;
}
そしてコード:
var MyMod = new MyModule();
MyMod.Params.Param1 = "new value"; // ok
// convert
Module Mod = MyMod; // if use MyModule Mod - ok
if (Mod.Params as MyOptions != null)
{
MessageBox.Show("cast OK"); // not execute
}
モジュールはさまざまなタイプにすることができますが (私にはわかりません)、常に Module から継承されます。フィールドParams
がインスタンス(または実装)であるかどうかを判断しMyOptions
、真の場合は値を取得する必要があります。私はどんな決定にも満足します。