C # Expression. Свойство интерфейса - PullRequest
0 голосов
/ 09 января 2019

Я генерировал динамическое выражение для CustomType на основе некоторых параметров. Код выглядит так:

ParameterExpression parameter = Expression.Parameter(typeof(CustomType), "x");
MemberExpression idMember = Expression.Property(parameter, "CustomProperty");

Когда я изменил тип CustomType на интерфейс ICustomType, он перестал работать из-за ошибки «Свойство экземпляра CustomProperty не определено для типа ICustomType». , Как это исправить?

1 Ответ

0 голосов
/ 09 января 2019

Без минимального проверяемого примера мы не можем быть уверены, в чем проблема, но из вашего примера кода я собрал следующее:

interface ICustomType
{
    int CustomProperty { get; set; }
}

class CustomType : ICustomType
{
    public int CustomProperty { get; set; }
}

Теперь, когда я вызываю ваш пример кода, все работает как положено

ParameterExpression parameter = Expression.Parameter(typeof(CustomType), "x");
MemberExpression idMember = Expression.Property(parameter, "CustomProperty");

Кроме того, когда я меняю тип на ICustomType, он все еще работает как положено.

ParameterExpression parameter = Expression.Parameter(typeof(ICustomType), "x");
MemberExpression idMember = Expression.Property(parameter, "CustomProperty");

Однако, если я удаляю объявление CustomProperty из ICustomType, я получаю следующую ошибку:

Свойство экземпляра 'CustomProperty' не определено для типа 'ICustomType'

Итак, это заставляет меня поверить, что ваш интерфейс не содержит объявления для CustomProperty. Если вы добавите его в свой интерфейс, ваш код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...