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

发布于 2024-10-17 04:53:51 字数 476 浏览 3 评论 0原文

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

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

我想从这个函数得到什么,我将向这个函数发送一个字符串以及我想要转换这个字符串的数据类型[例如:Int32,Int64,日期时间等..]返回值将与我作为输入参数发送的数据类型相同。

我想在我的函数中有这样的东西:

 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 

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

I want to create a function which would have two parameters

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

What I want from this function, that I will send a string to this function and the datatype in which I want to convert this string [Ex: Int32,Int64, datetime etc..] and the return will be the same as the datatype I have sent as the input parameter.

I want to have something like this in my function:

 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 

I have no idea how to send, compare and return the datatype dynamically.
Assist me

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

空宴 2024-10-24 04:53:51

使用通用函数怎么样?

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

因此,要从字符串中获取 int,请尝试以下操作:

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

How about using a generic function.

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

So to get an int from a string, try this:

int x = GetValue<int>("1234");
如梦初醒的夏天 2024-10-24 04:53:51

您可以将其用于您的函数(考虑可为空类型):

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

You can use this for your function (takes nullable types into consideration):

public T GetValue<T>(string value)
    {
        return (T)Convert.ChangeType(value, Nullable.GetUnderlyingType(typeof(T)) ?? typeof(T));
    }
橘亓 2024-10-24 04:53:51

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

use dynamic, if you are using .NET framework 4.0

寂寞花火° 2024-10-24 04:53:51

听起来你想使用泛型:

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

并且在使用中:

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

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

编辑:所以将其与米卡的答案结合起来并执行以下操作:

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

Sounds like you want to use Generics:

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

And in use:

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

Although inspecting the type of T for all accepted types could be a bit tedious.

edit: So combine it with Mika's answer and do:

public T GetOutput<T>(string input)
{
    return (T)Convert.ChangeType(input, typeof(T));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文