C# 简化检查它是什么类型并使用反射格式化字符串?

C# 简化检查它是什么类型并使用反射格式化字符串?,c#,generics,reflection,C#,Generics,Reflection,有没有办法简化if(值为X)然后自定义ToString() 我想买本字典 typeOf(DateTime), "mm/DD/yyyy" typeOf(float), "de-De" 并且有一个looup,但我无法将值转换为类型。您可以使用并利用动态类型: public class ValueFormatter { public string Format(object value) { return Format(value as dy

有没有办法简化if(值为X)然后自定义ToString()

我想买本字典

 typeOf(DateTime), "mm/DD/yyyy"
 typeOf(float), "de-De"
并且有一个looup,但我无法将值转换为类型。

您可以使用并利用
动态
类型:

public class ValueFormatter
{
    public string Format(object value)
    {           
        return Format(value as dynamic);
    }

    private string Format(DateTime date)
    {
        return date.ToString("MM/dd/yyyy");
    }

    private string Format(float floatData)
    {
        return floatData.ToString(CultureInfo.CreateSpecificCulture("de-DE"));
    }

    // ...
}
您现在可以重写代码:

var formatter = new ValueFormatter();
var value = FindBodyLine(iwant, props, obj);
sb.Append(formatter.Format(value));

您的问题实际上是关于“我不能将值转换为类型”的吗?这是什么意思?为什么不使用value.GetType()?
var formatter = new ValueFormatter();
var value = FindBodyLine(iwant, props, obj);
sb.Append(formatter.Format(value));