能不能用PropertyInfo.SetValue对枚举数组开展赋值
能不能用PropertyInfo.SetValue对枚举数组进行赋值。
我实现了除一般类型数组的赋值。
#ifdef ELSE
#define ELSE else
#else
#define ELSE
#endif
#define BUILDARR(type,fun) ELSE if(Type::GetType(typename) == _typeof(type)) \
{ \<br />
type arrf __gc[] = new type __gc[arr->Length]; \<br />
for(int k = 0; k < arr->Length; k++) \<br />
{ \<br />
arrf[k] = fun (arr->Item[k]); \<br />
} \<br />
arrobj = arrf; \<br />
}<br />
上面宏定义后,就可以用
BUILDARR(float,Convert::ToSingle);
BUILDARR(unsigned short,Convert::ToUInt16);
prop->SetValue(to, arrobj, NULL);
等来对各类型数组进行PropertyInfo.SetValue。
但是到了枚举那里,就不行了。
Type* t = prop->PropertyType->GetElementType();
if(t->IsEnum)<br />
{<br />
Object* arre = prop->GetValue(to, NULL);
Object* arrf __gc[] = new Object* __gc[arr->Length];<br />
for(int k = 0; k < arr->Length; k++)<br />
{<br />
arrf[k] = Enum::Parse(t,arr->Item[k]->ToString());<br />
}<br />
//arrobj = arrf;<br />
arre = arrf;<br />
//prop->SetValue(to, NULL, NULL);<br />
prop->SetValue(to, arre, NULL);<br />
总是提示无法转换,高手来解决一把.谢了
罪与罚与赎
10 years, 10 months ago