假设我想把一些xml解析成一个强类型的类。当我得到xml时,我不知道它应该是A型还是B型,直到我打开并查看。我可以看看,并返回一个像这样的枚举:什么更好?枚举或类型检查?
BaseType x = null;
TypeInfoEnum typeInfo = BaseType.GetTypeInfo(xml);
if(typeInfo == TypeInforEnum.TypeA)
{
x = BaseType.ParseXmlToTypeA(xml);
// do other work on Type A
}
else if(typeInfo == TypeInfoEnum.TypeB)
{
x = BaseType.ParseXmlToTypeB(xml);
// do other work on Type B
}
或者我可以只处理解析的一个方法,并检查类型:
BaseType x = BaseType.ParseXml(xml);
if(x.GetType() == typeof(TypeA))
{
// do work on Type A
}
else if(x.GetType() == typeof(TypeB))
{
// do work on Type B
}
只是想获得一些其他人的思想从你喜欢的设计立场出发。现在,细节并不是很重要。我只是根据XML中的内容从单个XML源创建2种不同的类型。没什么复杂。
UPDATE:
感谢迄今答案。该类型是不是真的这里很重要,但作为一个例子,类层次结构可能是这样的:
class BaseType
{
public string CommonData { get; set; }
}
class TypeA : BaseType
{
public string TypeASpecificData { get; set; }
}
class TypeB : BaseType
{
public string TypeBSpecificData { get; set; }
}
由于此功能将被卷成组件别人会用,我用喜欢的第一个选项枚举,因为让API的用户检查某些东西的类型看起来很尴尬,例如使用Enum在语义上看起来更彻底。
您能否包含TypeA和TypeB类可能的外观示例? – EkoostikMartin
只是一个错字我猜,但仍然: \t if(typeInfo == TypeInforEnum.TypeA)一个r太多 – Master117
@ Master117太多了什么? – EkoostikMartin