将对象解析为字符串表示c#

时间:2016-05-25 12:39:27

标签: c#

我试图将我的变量解析为其字符串表示形式typeName

string typeName = property.PropertyType.ToString();
var propertyItem = (typeName)property.GetValue(templateData, null);

字符串typeName应该是' Type'我在我的模型中的属性,所以不知何故我想解析它的类型。 (此刻它是List(InvoiceModel),但这可能会有所不同)

我希望这是足够的信息,否则请通知我。提前谢谢。

2 个答案:

答案 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
    }
}