带有属性 [ "propertyname" ] 的 C# 调用访问(等于 JavaScript)



如何使用propertyname访问c#中的类属性?就像我可以在JavaScript中使用property["propertyname"] ?

要通过名称访问属性的值,必须使用反射:

var propInfo = obj.GetType().GetProperty(propertyName);
var value = propInfo.GetValue(obj);

如果所讨论的类是您的类,则可以覆盖索引操作符:

public object this[string key]
{
    get
    {
        var property = typeof(YourClass).GetProperty(key);
        return property.GetValue(this);
    }
}

这将使您能够使用object["Title"]访问object.Title

当然这是一个简化的版本。您可能想要处理错误等等。此外,您可以缓存GetProperty()返回的PropertyInfo对象到Dictionary<string, PropertyInfo>,因为使用反射是相当慢的。

最新更新