我试图将我的变量解析为其字符串表示形式typeName
。
string typeName = property.PropertyType.ToString();
var propertyItem = (typeName)property.GetValue(templateData, null);
字符串typeName
应该是' Type'我在我的模型中的属性,所以不知何故我想解析它的类型。 (此刻它是List(InvoiceModel)
,但这可能会有所不同)
我希望这是足够的信息,否则请通知我。提前谢谢。
答案 0 :(得分:3)
property.GetValue
返回所需的对象。从您的代码示例中,您似乎在编译时不知道对象的类型。
无法使用(typename)
强制转换该对象,并且没有用处,因为在编译时仍然不会知道实际类型。
您可能想要做的是使用dynamic
:
dynamic propertyItem = property.GetValue(templateData, null);
答案 1 :(得分:2)
我认为你要找的是property.GetType()。ToString();
虽然你不能把varable放在括号中转换你需要使用反射来创建类型
那说整个想法是一个坏主意,从你的代码看起来我认为你试图创建某种形式的MetaData,如果是这样,那么我会使用Enum来定义你允许的数据类型,我只会允许最简单的有int,double,string,datetime等,可能还有这样的数组
在那种情况下,你会这样做,
if(Property.Type == AllowedTyoes.String)
{
string stringval = Property.Value as string;
//use the string for a string safe function
}
if(Property.Type == AllowedTyoes.Int)
{
string stringval = Property.Value as string;
int tmp;
if(int.TryParse(stringval,out tmp))
{
//use the int for a int safe function
}
}