【问题标题】:Get the Type of a Variable Being Assigned to From Within a Method从方法中获取分配给的变量的类型
【发布时间】:2016-01-28 13:15:00
【问题描述】:

我想创建一个方法,它采用动态输入参数并返回可用于填充类型变量的动态。有没有办法从方法中获取分配给的变量的类型?

double dbl = AssignValue("Hello");

public dynamic AssignValue(dynamic ValueToAssign)
{
    Type type = //do something to get the type of variable "dbl"

    switch (type.Name)
    {
        case "Double":
             return double.Parse(AssignValue);
             break;
        case "Decimal":
             return decimal.Parse(AssignValue);
             break;
        //...
    }    
}

我试图在 StackFrame 中找到一些东西,但没有成功。

任何进一步研究的术语也将不胜感激。

【问题讨论】:

  • typeOf(ValueToAssign) 或 ValueToAssign.GetType()
  • 这完全不可能。
  • @Dr.Stitch:他想要double,而不是string。另外,typeof(variable) 是非法的。
  • 是的,我刚才提到了如何获取变量的类型。

标签: c#


【解决方案1】:

有没有办法从方法中获取分配给的变量的类型?

没有。方法无法检索有关其结果将分配给的变量的任何信息。

但是,您可以使用泛型告诉方法您希望它返回的对象类型:

double dbl = AssignValue<double>("Hello");

public T AssignValue<T>(object valueToAssign)
{
    Type type = typeof(T);
    switch(type.Name)
    {
        //...
    }
}

【讨论】:

  • 好的,我正在研究这些。我想我假设它可能是可能的,因为您可以执行类似的操作,例如使用 StackFrame 获取调用方法的名称,如下所示:stackoverflow.com/questions/3095696/…
  • 好的,告诉我这不可能是一个很好的答案,所以我将使用您提供的这个选项。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2022-11-23
  • 2013-11-06
  • 1970-01-01
  • 2017-10-27
相关资源
最近更新 更多