能不能用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 />


总是提示无法转换,高手来解决一把.谢了

C++/VC 程序开发 数组

罪与罚与赎 10 years, 12 months ago

待分享...

无聊的夏天 answered 10 years, 12 months ago

我自己搞定了~~

madao18 answered 10 years, 12 months ago

Your Answer