【问题标题】:How to get value of variable from selected class In c#? [duplicate]如何从 C# 中的选定类中获取变量的值? [复制]
【发布时间】:2020-07-01 01:33:17
【问题描述】:

我想在一个类中的几个变量中获取所需变量的值

当我将字符串和类放入Method时,该方法返回的变量的值与该类中包含的所有变量中接收到的字符串同名。

这个方法可以获取任何类型的类。所以这个方法需要使用泛型。

有人对我的问题有好的想法吗?

public class A
{
    public int valA_int;
    public string valA_string;
    public float valA_float;
    public long valA_long;
}

public class B
{
    public int valB_int;
    public string valB_string;
    public float valB_float;
    public long valB_long;
}

public static class Method {
    public static object GetvalueFromClass<T>(string varName, T classType) {
        //Find val from class
        return object;
    }
}

public class Program {
    public A aClass;
    public B bClass;
    public void MainProgram() {
        object valA_int = Method.GetvalueFromClass("valA_int", aClass);
        object valB_long = Method.GetvalueFromClass("valB_long", bClass);
    }
}

方法的概念是这样的。

请帮我找出我的问题。

【问题讨论】:

  • 你为什么要这样做?
  • @Enigmativity 我想创建一个数据表。为此,我需要将数据加载到一个类中以在表格中显示数据
  • 您是在运行时动态加载程序集吗?
  • @Enigmativity 是的,我想制作每次用户想要加载时调用数据的程序。

标签: c#


【解决方案1】:

您的任务已经定义。

如果你使用

#{Class}.GetType().GetProperty(#{VariableName}).GetValue(#{DefinedClass}, null);

您可以使用变量名轻松地从您的类中获取变量。

它返回变量作为对象。所以你需要转换它

示例代码

CLASS YourClass = [A CLASS WHICH IS PRE DEFINED];
object Target = YourClass.GetType().GetProperty("YOUR VARIABLE").GetValue(YourClass , null);

【讨论】:

    【解决方案2】:

    好的,使用反射来获取对象中的所有变量,然后通过循环检查它们与属性名称的字符串。从那里你应该能够返回值。

    类似

    public object FindValByName(string PropName)
    {
        PropName = PropName.ToLower();
        var props = this.GetType().GetProperties();
    
        foreach(var item in props) {
            if(item.Name.ToLower() == PropName) {
                return item.GetValue(this);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 2020-01-07
      • 2015-10-25
      • 1970-01-01
      • 2021-05-22
      • 2021-02-06
      • 2021-02-13
      • 1970-01-01
      相关资源
      最近更新 更多