我有一个类 Field
,其中有两个子类 AccountField
和 DecimalField
。
即
class Field{//some properties}
class DecimalField : Field {...}
class AccountField : Field {...}
然后我有另一个类 Data
,它有一个 Field
类型的成员属性。
但是它有问题。如果我将 DecimalField
变量分配给 Data
中的 Field
属性,那么我将无法使用 DecimalFields
的某些属性,而且Accountfield
变量也一样...
我必须做什么?我必须使用哪种模式?
我正在使用 C# 4.0 和 MS Studio 2010
是的,你可以。
假设您有这样的字段类
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");
}