泛型类型转换FROM字符串

我有一个我想用来存储另一个类的“属性”的类。 这些属性只有一个名称和一个值。 理想情况下,我希望能够添加类型化属性,以便返回的“值”始终是我希望的类型。

该类型应该始终是原始的。 这个类继承了一个抽象类,它基本上将字符串的名称和值存储起来。 这个想法是,这个子类将为基类增加一些类型安全性(以及节省我的一些转换)。

所以,我创建了一个类(大致):

public class TypedProperty<DataType> : Property
{
    public DataType TypedValue
    {
        get { // Having problems here! }
        set { base.Value = value.ToString();}
    }
}

所以问题是:

有没有一种“通用”的方式来从字符串转换回原始?

我似乎无法找到任何通用的接口来连接整个板子上的转换(类似ITryParsable会是理想的!)。


我不确定我是否正确理解你的意图,但让我们看看这个是否有帮助。

public class TypedProperty<T> : Property where T : IConvertible
{
    public T TypedValue
    {
        get { return (T)Convert.ChangeType(base.Value, typeof(T)); }
        set { base.Value = value.ToString();}
    }
}

lubos hasko的方法不适用于可空数据。 下面的方法适用于可空数据。 不过,我没有想到它。 我通过谷歌发现它:http://web.archive.org/web/20101214042641/http://dogaoztuzun.com/post/C-Generic-Type-Conversion.aspx信用“金枪鱼Toksoz”

用法第一:

TConverter.ChangeType<T>(StringValue);  

这个班级在下面。

public static class TConverter
{
    public static T ChangeType<T>(object value)
    {
        return (T)ChangeType(typeof(T), value);
    }

    public static object ChangeType(Type t, object value)
    {
        TypeConverter tc = TypeDescriptor.GetConverter(t);
        return tc.ConvertFrom(value);
    }

    public static void RegisterTypeConverter<T, TC>() where TC : TypeConverter
    {

        TypeDescriptor.AddAttributes(typeof(T), new TypeConverterAttribute(typeof(TC)));
    }
}

对于许多类型(整数,双精度,DateTime等),有一个静态的Parse方法。 你可以使用反射来调用它:

MethodInfo m = typeof(T).GetMethod("Parse", new Type[] { typeof(string) } );

if (m != null)
{
    return m.Invoke(null, new object[] { base.Value });
}
链接地址: http://www.djcxy.com/p/39427.html

上一篇: Generic type conversion FROM string

下一篇: Unable to set height of Fullcalendar agenda view