我使用一個程序來讀取數據從XML文件與此類似:爲什麼我的演員無效?
<VerificationSample X1 = "1" X3 = "3" ../>
使用此電話:
XmlReader reader = XmlReader.Create(path);
reader.ReadToFollowing("VerificationSample");
this.X1 = (double)FileStructure.GetAttributeSafe(reader, "X1", typeof(double)); // exists
this.X2 = (double)FileStructure.GetAttributeSafe(reader, "X2", typeof(double)); // doesn't exist
然而,一些屬性可能不存在,所以我處理使用它裏面這個例程該屬性讀卡器功能定義:
public static object GetAttributeSafe(XmlReader reader, string attributeName, Type objectType)
{
// ..
string value = reader.GetAttribute(attributeName);
if (value != null) // attribute exists
{
if (objectType != typeof (string))
{
var converter = TypeDescriptor.GetConverter(objectType);
returnValue = converter.ConvertFrom(value);
}
else // is already a string and doesn't need to be converted
{
return value;
}
}
else // attribute doesn't exist
{
return "0";
}
}
如果屬性不存在,程序彈出一個錯誤:
Specified cast is not valid
我的錯誤是什麼?
如果該屬性不存在,那麼你的方法返回*'string' *'「0」'。這不能轉換爲「雙」。 –
@john,但是如果讀者從文件中讀取「0」,這是一個字符串。有用。如果我做這個'value =「0」;返回值;'它也行不通。爲什麼? –
當您從文件中讀取「0」時,您會遇到一些麻煩,將其轉換爲請求的類型。當請求的屬性不存在時,您不會運行該代碼路徑。 –