2

我目前遇到的问题是我正在尝试转换为未知类型,并且我从以下代码收到此消息:

找不到类型或命名空间名称“thistype”(您是否缺少 using 指令或程序集引用?)

String thistype = null;

for (int i = 0; i < items.Length; i++)
{

    thistype =  typeof(BugManagerQueryOptions).GetProperty(items[i].ToString()).PropertyType.Name; 
    typeof(BugManagerQueryOptions).GetProperty(items[i].ToString()).SetValue(currentSearch,(thistype)properties[i], null);

}

如果您需要更多信息,请询问,我们将不胜感激,谢谢。- 克里斯

4

2 回答 2

4

您根本不需要强制转换,假设值实际上properties[i]已经是正确的类型:

for (int i = 0; i < items.Length; i++)
{
    typeof(BugManagerQueryOptions).GetProperty(items[i].ToString())
                                  .SetValue(currentSearch, properties[i], null);
}

如果您试图调用用户定义的转换(例如 from XElementto String),那么这要复杂得多。

于 2013-09-19T08:40:50.953 回答
0

对于任何未来的参考,这是(非常草率的)做我想做的事情的方式,我将对此进行改进,但我认为我应该把它留给其他人。

            thistype =  typeof(BugManagerQueryOptions).GetProperty(items[i].ToString()).PropertyType.FullName;

            if (thistype == "System.String")
            {
                 typeof(BugManagerQueryOptions).GetProperty(items[i]).SetValue(currentSearch, properties[i], null);
            }
            else if (thistype == "System.Nullable`1[[System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]")
            {

                long number = Int64.Parse(properties[i]);
                typeof(BugManagerQueryOptions).GetProperty(items[i]).SetValue(currentSearch, number, null);

            }
            else if (thistype == "System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]")
            {

                int number = Int32.Parse(properties[i]);
                typeof(BugManagerQueryOptions).GetProperty(items[i]).SetValue(currentSearch, number, null);

            }
于 2013-09-19T09:37:18.060 回答