PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_Sharp
[问题]请问有高手可以帮忙解答吗?关于Type的问题
楼主:
bantime
(景)
2015-01-13 16:15:46
private void Test()
{
string[] arrayData = new string["20", "30", "40"];
foreach (var field in Fields)
{
if (field.FieldType.IsArray)
{
var elementType = field.FieldType.GetElementType();
if (elementType.IsValueType)
{
var value = (from tar in arrayData
select (Convert.ChangeType(tar, elementType))).ToArray();
#1 field.SetValue(this, value);
#2 field.SetValue(this, Convert.ChangeType(value, field.FieldType));
}
}
}
}
private FieldInfo[] Fields
{
get
{
return this.GetType().GetFields(System.Reflection.BindingFlags.DeclaredOnly |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.Public);
}
}
我现在只知道我的Class里面有一个实值型别的阵列
但是确切的型别不明
然后Convert.ChangeType(tar, elementType) 可以将tar转型成我的元素型别
但是传回来的型别仍然是object 所以我的var value 的型别是object[]
这时候无论用#1 #2的方式去塞值 都会丢出例外
请问我有办法在不知道型别的状况下 将 Array生成 然后塞回去Class里面给该阵列吗?
另外尝试过 field.SetValue(this, new int[]{1,2,3}); 且 我的字段是int[]的时候
可以成功的指定
作者:
ssccg
(23)
2015-01-13 16:29:00
主要在 Convert.ChangeType 回传type是object你要先写个generic版的ChangeType,然后用reflection用你的elementType去invoke这个method来转换
https://ideone.com/3E1TGc
楼主:
bantime
(景)
2015-01-13 20:09:00
非常感谢,我再研究一下我跟你的差异
继续阅读
[问题] IDE的功能询问
jacky951
[问题] 新手问..关于Combobox的问题..
alancmh
[问题]3D绘图
haves560
[问题] socke的问题
cld123
[问题] 传值/址呼叫的问题
Boom3
[问题] C#程式在别台电脑执行
walter0914
[问题] 再次请教版上前辈
prettywendy
[问题] Kinect2 的开发
srxrrr
Re: [问题] ?: 运算子的问题
VVll
[问题] ?: 运算子的问题
apologize
Links
booklink
Contact Us: admin [ a t ] ucptt.com