在C#中,如何使用变量的内容来访问对象属性

时间:2014-07-04 22:01:18

标签: c# office-interop outlook-addin

我有一个Outlook插件,我试图避免世界上最大的转换。要获取联系信息,我使用的项目如下:Microsoft.Office.Interop.Outlook.ContactItem.EmailAddress 由于项目很多,我想用变量来选择项目,比如字符串myVariable =" EmailAddress&#34 ;;或字符串myVariable =" FullName&#34 ;;然后使用ContactItem.myVariable。这些项目是从xml文件中提取的。我正在画一个空白,可以使用一些帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

我猜你可以使用反射来创建一个检查属性的扩展方法。

尽管请记住你开始发表的一些评论:)

using Outlook = Microsoft.Office.Interop.Outlook;

public static class ContactItemExtension
{
    public static object Get(this Outlook.ContactItem item, string property)
    {
        object result = null;
        if (item == null) {
            // default null
            return result;
        }
        var ctype = item.GetType();
        var cprop = ctype.GetProperty(property);
        if (cprop == null || cprop.GetGetMethod() == null) {
            // no property found or it doesn't have a get
            return result;
        }
        result = cprop.GetValue(item, null);
        return result;
    }
}

之后你可以简单地调用,在任何ContactItem顶部使用属性名称的Get方法

item.Get("EmailAddress1");