Я пытаюсь написать функцию, которая возвращает строку, представляющую тип объекта, выбранного в настоящее время в Excel.C# Определение типа выбранного объекта в Excel
Прямо сейчас, это то, что у меня есть:
public String GetExcelType(dynamic thing)
{
if(thing.GetType().GetProperty("ChartStyle") != null)
{
return "[CHART]";
}
else if (thing.GetType().GetProperty("Cells") != null)
{
return "[TABLE]";
}
return "[UNKNOWN]";
}
А потом вызывается:
GetExcelType(oExcelApp.ActiveWindow.Selection);
проблема, она возвращает "[Unknown]" каждый раз.
Далее запутывает проблему, выскакивает открыть сеанс отладки, мы можем ясно видеть, что объект обладает свойством в вопросе (в данном случае «клетка»):
Я вытащил dynamic.GetType().GetProperty("foo")
немного от несколько других вопросов (все, похоже, согласны с тем, что это должно сработать), но, похоже, на флопе. Что я делаю не так?
Можете ли вы просмотреть/опубликовать то, что находится в списке, который возвращается, если вы вызываете thing.GetType(). GetProperties()? AFAIK, есть только 2 способа сделать это: один из них - GetType (как вы это делаете), а другой пытается получить доступ к этому свойству и перехватывает исключение RuntimeBinderException, если он не работает. – Baldrick
@Baldrick Может быть, я делаю это неправильно, но все, что мне кажется, может выйти из него: '{System.Reflection.PropertyInfo [0]}' –