如何在C#中将动态数据类型作为参数传递?

时间:2011-06-23 20:28:05

标签: c# xml methods parameters

我在c#中有一个方法可以动态构建xml。

但是,在运行时之前我不会知道具体的元素/属性。

当我不知道数据类型,名称,数值或金额是多少时,如何声明参数?

3 个答案:

答案 0 :(得分:2)

您正在寻找params个关键字。或者是你? :)

答案 1 :(得分:1)

您可以对所有参数使用System.Object,因为它是所有其他类型的基类。然后,您可以使用GetType()方法找出实际声明的类型,并适当地处理该值。

e.g。

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();
}

答案 2 :(得分:0)

另一种选择是使用泛型。如果您需要对可传入的类型设置约束,这将非常有用:

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

或者,如果您期待一组对象:

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

然后您可以使用反射来获取所需的相关数据。