字符串类型的类型切换

时间:2018-11-07 11:24:39

标签: c#

我有一个将字符串化的数据解析为本地数据类型(本身的属性)的类。遍历类的属性,并使用与属性类型匹配的switch语句:

using System.Reflection;

…

class DataParser
{
    public int i { get; set; }
    public bool b { get; set; }
    public string s { get; set; }
    public DateTime d { get; set; }
    public Decimal e { get; set; }

    public DataParser()
    {
        PropertyInfo[] properties = this.GetType().GetProperties();
        foreach (PropertyInfo property in properties)
        {
            object currentValue = property.GetValue(this);
            switch (currentValue)
            {
                case Int32 _:
                    …
                    break;
                case DateTime _:
                    …
                    break;
                case Decimal _:
                    …
                    break;
                case Boolean _:
                    …
                    break;
                case string _:
                    …
                    break;
                default:
                    throw new Exception($"Could not find type for {property.PropertyType}");
            }
        }
    }
}

类型匹配适用于除string以外的所有类型,该类型抛出:

Exception: Could not find type for System.String

是否由于string是引用类型而导致不匹配?我用string替换了StringSystem.String,结果相同。

更新

正如一些人所建议的那样,字符串属性的值为null。设置默认值

public string s { get; set; } = "";

导致匹配。

0 个答案:

没有答案