动态返回类型基于输入 - asp.net

时间:2011-02-14 09:48:59

标签: c# asp.net function dynamic

我想创建一个具有两个参数的函数

public **XYZ** GetOputput(string strToConvert, **ABC**)

我想从这个函数,我将发送一个字符串到这个函数和我想要转换这个字符串的数据类型[Ex:Int32,Int64,datetime等..]和返回将是相同的我发送的数据类型作为输入参数。

我希望在我的功能中有这样的东西:

 switch(//what is the data type)

                case: //if data type is date than do something and return date
                case: //if data type is int than do something and return int 

我不知道如何动态发送,比较和返回数据类型。 协助我

5 个答案:

答案 0 :(得分:5)

如何使用通用功能。

  public T GetValue<T>(string value)
  {
     return (T)Convert.ChangeType(value, typeof(T), CultureInfo.InvariantCulture);
  }

所以要从字符串中获取一个int,请尝试:

int x = GetValue<int>("1234");

答案 1 :(得分:3)

您可以将此功能用于您的功能(考虑可空类型):

public T GetValue<T>(string value)
    {
        return (T)Convert.ChangeType(value, Nullable.GetUnderlyingType(typeof(T)) ?? typeof(T));
    }

答案 2 :(得分:1)

如果您使用的是.NET Framework 4.0,请使用dynamic

答案 3 :(得分:1)

答案 4 :(得分:1)

听起来你想使用泛型:

public T GetOutput<T>(string input)
{
//DoStuff
}

并在使用中:

var int = GetOutput<int>("10");

虽然检查所有接受类型的T类型可能有点乏味。

编辑:所以将它与Mika的答案结合起来并做:

public T GetOutput<T>(string input)
{
    return (T)Convert.ChangeType(input, typeof(T));
}