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

本文关键字:数据类型 参数传递 动态 | 更新日期: 2023-09-27 18:00:19

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

但是,直到运行时,我才知道具体的元素/属性。

当我不知道数据类型、名称和值或数量时,如何声明参数?

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

您正在查找params关键字。还是你?:)

您可以对所有参数使用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();
}

等等。

另一个选项是使用泛型。如果您需要对可以传入的类型进行约束,这将非常有用:

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

或者,如果您期望一个对象集合:

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

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