Проблема с экспромтом в C# - PullRequest
0 голосов
/ 19 июня 2020

Я использую Impromptu в C#, и у меня следующая ситуация.

Это мой класс, который я заполняю:

public class FinalDecisionInformation
{
  public int PersonNo { get; set; }
  public int OrdNo { get; set; }
  public int OrdLineNo { get; set; }
  public int OrdStatus { get; set; }
}

Это определение интерфейса IFinalDecisionEvaluate :

public interface IFinalDecisionEvaluate
{
  List<FinalDecisionInformation> FinalDecisionList { get; set; }
}

Мой код сейчас выглядит так:

List<FinalDecisionInformation> finalDecision = (List<FinalDecisionInformation>)serializer.Deserialize(stringReader);

var finalDecisionSend = Impromptu.ActLike<IFinalDecisionEvaluate>(finalDecision);

Этот код вызывает следующую ошибку:

((ActLike_IFinalDecisionEvaluate_f627852407d342cb8e77c394c0b2791f)finalDecisionSend).FinalDecisionList = '((ActLike_IFinalDecisionEvaluate_f627852407d342cb8e77c394c0b2791f)finalDecisionSend).FinalDecisionList' threw an exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'

Итак, по сути, мне нужно просто сопоставьте мой объект списка с интерфейсом. Может ли кто-нибудь помочь с этой ошибкой? Не могу понять, где несоответствие.

Спасибо!

1 Ответ

0 голосов
/ 19 июня 2020

Ах, думаю, я разобрался. Мне нужно было создать прокси-объект с именем поля, указанным в интерфейсе:

var finalDecisionList = new { FinalDecisionList = finalDecision };
var finalDecisionSend = Impromptu.ActLike<IFinalDecisionEvaluate>(finalDecisionList);

Кажется, это работает. Так что учимся!

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