はい、できます。
このようなフィールドクラスがあるとしましょう
public class Field
{
public string Property1{get;set;}
public int Property2 {get;set;}
}
そして、このような小数フィールドクラス
public class DecimalField:Field
{
public int DecimalFieldProperty {get;set;}
}
、そして Accountfield はこのように
public class AccountField:Field
{
public double Balance{get;set;}
}
、DoSomething というメソッドがあるとします。このメソッドは、以下のようなFieldタイプのパラメーターを想定しています。
void DoSomething(Field field)
{}
次に、具体的な型を渡すには、次のようなことができます
void DoSomething(Field field)
{
var decimalField = field as DecimalField;
//Do something with the decimal field instance
if(decimalField !=null)
{
Console.WriteLine("Decimal Field Property {0}",decimalField .DecimalFieldProperty );
return;
}
//Cast the field as a account field instance
var accountField = field as AccountField;
if(accountField !=null)
{
Console.WriteLine("Balance {0}", accountField.Balance );
return;
}
//Do something else with the normal field
Console.WriteLine("Normal Field");
}