C# 获取类中所有变量名字,以及变量类型,并且根据类型调用相应的方法把值传入变量
时间: 2024-01-17 15:05:43 浏览: 65
好的,以下是在 C# 中实现获取类中所有变量名字、类型并根据类型调用相应方法传值的示例代码:
```csharp
using System;
using System.Reflection;
class MyClass
{
public string name;
public int age;
public float height;
public void SetName(string name)
{
this.name = name;
}
public void SetAge(int age)
{
this.age = age;
}
public void SetHeight(float height)
{
this.height = height;
}
public void GetVariables()
{
Type myType = typeof(MyClass);
FieldInfo[] fields = myType.GetFields(BindingFlags.Public | BindingFlags.Instance);
foreach (FieldInfo field in fields)
{
Type fieldType = field.FieldType;
string fieldName = field.Name;
Console.WriteLine($"Please enter value for {fieldName}: ");
string value = Console.ReadLine();
if (fieldType == typeof(string))
{
MethodInfo method = typeof(MyClass).GetMethod("SetName");
method.Invoke(this, new object[] { value });
}
else if (fieldType == typeof(int))
{
MethodInfo method = typeof(MyClass).GetMethod("SetAge");
method.Invoke(this, new object[] { int.Parse(value) });
}
else if (fieldType == typeof(float))
{
MethodInfo method = typeof(MyClass).GetMethod("SetHeight");
method.Invoke(this, new object[] { float.Parse(value) });
}
}
}
}
public class Program
{
public static void Main()
{
MyClass myClass = new MyClass();
myClass.GetVariables();
Console.WriteLine($"Name: {myClass.name}, Age: {myClass.age}, Height: {myClass.height}");
}
}
```
在这个示例代码中,我们定义了一个`MyClass`类,其中包含了3个公共字段:`name`、`age`和`height`,以及3个设置字段值的方法:`SetName()`、`SetAge()`和`SetHeight()`。`GetVariables()`方法用于获取类中所有字段的名称和类型,并根据类型调用相应的方法传入值。最后,在`Main()`方法中实例化`MyClass`类并调用`GetVariables()`方法来测试这个功能。
阅读全文