首页 > 解决方案 > 我如何按名称获取 System.Object 的属性

问题描述

我有一个类型的对象Microsoft.Azure.EventGrid.Models.EventGridEvent。它有一个名为Datatype的属性System.Object。我想访问itemId. Data如何获取 System.Object 属性的值?

标签: c#

解决方案


您必须向下转换为对象的实际类型。由于您知道您期望的对象的类型,这在大多数情况下应该有效,但我建议您进行一些错误处理以检测某些代码将值设置为Data您不期望的类型的情况,或者无效的。就我个人而言,我喜欢与as操作员一起检查向下转换,因为我觉得这很简洁,所以是这样的:

int GetItemId(EventGridEvent ev)
{
    T dt = ev.Data as T // where T is the known concrete type that you've set
    if(dt == null)
    {
        // ... error handling: what will you do if you find an unexpected type?
    }
    else
    {
        return dt.itemId;
    }
}

推荐阅读