c#怎么根据string字符串名查找class类中同名的属性
时间: 2024-09-08 18:04:32 浏览: 75
C#中重载与重写区别分析
在C#中,如果你想要根据字符串的名字查找对应的类属性,可以使用反射(Reflection)功能。反射是一种强大的机制,它允许程序在运行时检查和操作对象的类型信息。下面是一个简单的方法来根据字符串名字查找并获取类中同名的属性值:
```csharp
using System;
using System.Reflection;
public class MyClass
{
public string MyProperty { get; set; }
}
public static object GetPropertyByName(object instance, string propertyName)
{
if (instance == null)
throw new ArgumentNullException(nameof(instance));
if (string.IsNullOrEmpty(propertyName))
throw new ArgumentException("Property name cannot be null or empty.", nameof(propertyName));
Type type = instance.GetType();
PropertyInfo propertyInfo = type.GetProperty(propertyName);
if (propertyInfo == null)
throw new ArgumentException($"No property '{propertyName}' found on type {type.Name}.");
return propertyInfo.GetValue(instance);
}
```
使用这个方法的例子:
```csharp
MyClass obj = new MyClass { MyProperty = "Hello World!" };
string propertyName = "MyProperty";
object value = GetPropertyByName(obj, propertyName);
Console.WriteLine(value); // 输出: Hello World!
```
这段代码首先定义了一个`MyClass`类,其中有一个名为`MyProperty`的属性。`GetPropertyByName`方法接受一个对象实例和一个属性名作为参数,然后使用反射查找并获取该属性的值。
阅读全文