空字符串变量的GetType()

时间:2015-07-24 01:28:50

标签: c# string reflection

我使用反射来调用静态的泛型方法(因为该类型仅在运行时已知)。这似乎对我有用,直到类型为字符串。我得到一个"对象未设置为对象的实例"以下代码中Type proptype = entity[property.Key].GetType();上的例外情况。我相信这是因为当它获得类型时,字符串是空的。

            foreach (KeyValuePair<string, FieldAttribute> property in EntityProperties)
            {
                Type gen = typeof(DBGeneric);
                MethodInfo mi = gen.GetMethod("FromDBVal");

                Type proptype = entity[property.Key].GetType();

                MethodInfo mil = mi.MakeGenericMethod(proptype);

                object[] args = { dr[property.Value.ColumnName] };
                entity[property.Key]=mil.Invoke(null, args);
            }

dr是一个datareader。 EntityProperties是使用早期反射填充的字典,以避免不必要的重复反射。 FieldAttribute是模型的每个属性的自定义属性,用于指定该属性如何与数据库中表的列相关联。以下是两个示例属性:

    [Field("COLUMN1", "Description of this column.", true)]
    public int Property1 { get; set; }

    [Field("COLUMN2", "Description of this column.", true)]
    public string Property2 { get; set; }

我调用的通用方法FromDBVal<T>,大多只是处理数据库中的空值,但也处理一些类型有点不同(由于数据库设计,有时某些值将返回为decimal精度为.00,应为int32

所以任何人都可以看到一种方法,我可以得到一个空字符串的类型吗?

编辑:

我已经尝试了其他答案提出的建议,但这对我不起作用。我结束了轻微的重构,单独处理字符串(也使用了Jon Skeet在https://stackoverflow.com/a/3561320/4852638的答案中的一些材料)。

0 个答案:

没有答案