2011-03-16 49 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(); 

我希望这是你的要求,因为这个问题是不完全清楚给我。