Мы не можем получить стоимость от собственности - PullRequest
0 голосов
/ 11 ноября 2019

Вот мой код

public abstract class LayoutMetadata
{
    public abstract Guid StaticId { get; }
}

Public MonthlyRor:LayoutMetadata
{
        //Here we assigned static value to StaticId
     public override Guid StaticId => new Guid("1188644E-C754-4121-9625-1EDD361455D3");
}

var type = typeof(LayoutMetadata).Assembly.SafeGetTypes().Where(t => !t.IsAbstract && t != typeof(LayoutMetadata)).ToList();
var test=first.GetProperty("StaticId").GetValue(first, null);

Я пытался

var test=first.GetProperty("StaticId").GetValue(first, null);

, но выбрасывает

"Объект делаетне соответствует типу цели "исключение

Пожалуйста, предложите какое-либо решение по этому вопросу.

1 Ответ

0 голосов
/ 11 ноября 2019

Прежде всего, вы, похоже, неправильно понимаете типы и экземпляры объектов того типа, из которого вы хотите получить информацию.

type в вашем коде должно быть тип объекта, который вы хотите проверить, и first должен быть экземпляром типа type, который вы хотите проверить. Если это так, то ваш код должен выглядеть следующим образом:

var test = type.GetProperty("StaticId").GetValue(first, null);

Обратите внимание, что GetProperty необходимо вызывать из объекта типа (type) и экземпляра объекта, который вы хотитеinspect передается в качестве аргумента методу GetValue. Тривиальный пример, который проясняет:

var p = new Person();
var t = p.GetType();
var name = t.GetProperty("Name").GetValue(p, null);
...