2011-06-23 23 views
2

我有一個在C#中的方法,即時建立xml。如何在C#中將動態數據類型作爲參數傳遞?

但是,直到運行時,我纔會知道具體的元素/屬性。

當我不知道數據類型,名稱和值或數量是什麼時,我該如何聲明參數?

+2

聽起來不像你知道你想做什麼。你可以添加一些例子嗎? –

+5

您是否正在重塑[XmlSerializer](http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer.aspx)? –

回答

2

您是否在尋找params的關鍵字。或者你呢? :)

1

對於所有參數,您可以使用System.Object,因爲它是所有其他類型的基類。然後,您可以使用GetType()方法找出實際聲明的類型,並適當處理該值。

例如

if (myParam.GetType() == typeof(Int32)) 
{ 
    // treat value as integer ... 
    int val = (int)myParam; 
} 

,或者您可以使用語法

if (myParam is Int32) 
{ 
    // treat value as integer ... 
    int val = (int)myParam; 
} 
else if (myParam is String) 
{ 
    string val = myParam.ToString(); 
} 

0

另一種選擇是使用泛型。

public void BuildXml<T>(T obj) 
{ 
    // do work 
} 

或者,如果你期待的對象的集合:

public void BuildXml<T>(IEnumerable<T> items) 
{ 
    // do work 
} 

然後你可以使用反射來得到,如果你需要把制約,可以在傳遞的類型,這將是有幫助您需要的相關數據。

相關問題