2011-03-16 71 views
1

我在下面序列化一個類,該方法需要對象類型作爲參數。typeof&GetType

string xml = SerializeObject(data, typeof(ClassData)); 

我認爲第二個參數是沒有必要的。我如何刪除第二個參數? 如何獲得數據類型作爲類型

+1

你應該使用PascalCase命名你的類,以避免混淆。看看答案中發生了什麼 - 儘管classData是一個類,但很多人都是變量。公約很重要。否則,你將不會受到其他極客的歡迎。這並不好玩。 – 2011-03-16 12:21:39

+0

這是Microsoft的命名約定:http://msdn.microsoft.com/en-us/library/ms229002.aspx – 2011-03-16 12:23:43

+0

什麼是SerializeObject?一些自定義的方法也許,你可以發佈什麼參數是預期的,它是沒有意義的要求對象和它的類型 – 2011-03-16 12:23:51

回答

6

你可以這樣做:

data.GetType() 

這將使你的data

整個expre類型裂變將是

string xml = SerializeObject(data, data.GetType()); 

GetType()是宣佈Object並且可以在對象的實例可以使用的方法。

typeof()是一個聲明,可以用於Type沒有它的一個實例。

// Get type from instance 
Type type = data.GetType() 

// Get type from Type 
Type type = typeof(ClassData) 
+0

在一個簡短的** typeof(ClassName)** = ** classVariable.GetType()**和我的方法成爲** SerializeObject(數據); ** – 2011-03-16 13:02:05

+0

我想你可以簡單地表達這一點,是的.. :) – 2011-03-16 13:03:59

2
string xml = SerializeObject(data, data.GetType()); 

,如果你有

Person p = ... ; 

得到的類型,你可以,如果你所需要的對象的運行時類型做

Type t = p.GetType() 

。 p可以是擴展Person的類的對象。

Type t = typeof(Person); 
1

使用以下:

classData.GetType(); 
1

data.GetType()應該返回'data'類的類型對象。

1

要獲得data類型爲Type,你可以使用這個語法:

Type dataType = data.GetType(); 

我希望這是你的要求,因爲這個問題是不完全清楚給我。