根据参数返回一个指定类型变量的古怪问题
参数有2个:P1是string类型,值像“string”/"int"/"decimal".指示的是返回的变量的类型。
P2也是string类型,它的值是返回的变量的值的文本化。比方说“A”/"123"/"12.3"
比方说P1="decimal",P2="12.3"
那么返回的是一个decimal类型的对象,它的值为12.3
怎么设计这个函数
--------------------编程问答-------------------- 学习。不明白楼主说什么 --------------------编程问答-------------------- 有点像反序列化,但要比反序列化要灵活一些的做法。 --------------------编程问答--------------------
--------------------编程问答--------------------
private void button1_Click(object sender, EventArgs e)
{
double d = Convert<double>("1234");
Color c = Convert<Color>("Yellow");
}
// 方法一
static T Convert<T>(string str)
{
TypeConverter converter = TypeDescriptor.GetConverter( typeof(T) );
if (converter != null && converter.CanConvertFrom(typeof(string)))
{
return (T)converter.ConvertFrom(str);
}
return default(T);
}
// 方法二,如果传入string typeName,可以Type targetType = Type.GetType( typeName )
static object Convert(Type targetType, string str)
{
TypeConverter converter = TypeDescriptor.GetConverter(targetType);
if( converter != null && converter.CanConvertFrom( typeof(string) ))
{
return converter.ConvertFrom( str );
}
return null;
}
因为类型也不知道,尤其是只能用string来描述类型,我卡就卡在这了
但仍然十分感谢你的代码 --------------------编程问答-------------------- 你能“用string来描述类型”怎么会“类型也不知道”? --------------------编程问答-------------------- string str = "int";
string p = "12.3";
if (str =="decimal")
Console.WriteLine(Convert.ToDecimal( p));
else if(str=="int")
Console.WriteLine(Convert.ToInt32(p));
Console.Read(); --------------------编程问答-------------------- 那你只能返回object类型. --------------------编程问答-------------------- 这个是你期望的解决方式,但是你到底想解决什么样的问题呢, --------------------编程问答-------------------- 用最笨的方式吧,如下
参数string type
参数string value
if(type.trim() == "double")
{
double v;
if(double.Trypars(value,out v))
return (object)v;
}
else if(...)
{
... --------------------编程问答-------------------- 刚才的返回值 为object类型的
语言用的是c#
补充:.NET技术 , C#