如何在C#中将动态数据类型作为参数传递
本文关键字:数据类型 参数传递 动态 | 更新日期: 2023-09-27 18:00:19
我在c#中有一个方法,它可以动态构建xml。
但是,直到运行时,我才知道具体的元素/属性。
当我不知道数据类型、名称和值或数量时,如何声明参数?
您正在查找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
}
然后,您可以使用反射来获得所需的相关数据。