简短版本 -
是否有简单方法来获取包含未知数组实例的对象类型的变量(UInt16 [],字符串[等等)并将其视为数组,比如调用String.Join(“,”,obj)来生成逗号分隔的字符串?
琐?我也这么认为。
请考虑以下事项:
object obj = properties.Current.Value;
obj可能包含不同的实例 - 例如一个数组,比如UInt16 [],string []等。
我想将obj视为它的类型,即 - 执行转换为未知类型。在我完成之后,我将能够正常继续,即:
Type objType = obj.GetType();
string output = String.Join(",", (objType)obj);
上述代码当然不起作用(objType unknown)。
这两个都没有:
object[] objArr = (object[])obj; (Unable to cast exception)
只是要清楚 - 我不是试图将对象转换为数组(它已经是数组的实例),只能将其视为一个。
谢谢。
答案 0 :(得分:9)
假设您正在使用.NET 4(其中string.Join
获得更多重载)或稍后有两个简单的选项:
使用动态类型让编译器计算泛型类型参数:
dynamic obj = properties.Current.Value;
string output = string.Join(",", obj);
转换为IEnumerable
,然后使用Cast<object>
获取IEnumerable<object>
:
IEnumerable obj = (IEnumerable) properties.Current.Value;
string output = string.Join(",", obj.Cast<object>());