c#使用没有反射的列表访问类的特定成员

问题描述

我想检查类的特定字段的内容。如果没有值,它应该给出一个消息。当前示例正在运行。但我正在寻找一种无需反射的方法

using System;
using System.Reflection;

namespace ConsoleApp1
{
    class Program
    {
       static void Main(string[] args)
       {
           TableDescription table1 = new TableDescription { BUYER_AID = 0,DESCRIPTION_LONG = 3,EAN = 2,supplier = 17};
           TableDescription table2 = new TableDescription();
           string [] members = new string[] { "BUYER_AID","DESCRIPTION_LONG","EAN" };
           CheckAndSetValue(table1,table2,members);
       }

       static void CheckAndSetValue(TableDescription t1,TableDescription t2,string[] list)
       {
           foreach (string name in list)
           {
               Type type = typeof(TableDescription);
               FieldInfo typeinfo = type.GetField(name);
               short value = Convert.ToInt16(typeinfo.GetValue(t1));
               if (0 != value)
               {
                   typeinfo.SetValue(t2,value);
               }
               else
               { 
                    Console.WriteLine($"Value for {name} is missing!");
               }
           }
       }
   }
   public class TableDescription
   {
       public short BUYER_AID = 0;
       public short DESCRIPTION_LONG = 0;
       public short EAN = 0;
       public short supplier = 0;
   }
}

有没有办法做到这一点:

var[] members = new var[]{TableDescription.BUYER_AID,TableDescription.DESCRIPTION_LONG,TableDescription.EAN};

我正在寻找一种无刺痛的解决方案。使用字符串会给重构带来麻烦,如果出错,它会在运行时崩溃。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...