Проблема с экспромтом в C#
Я использую 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 ответ
Ах, думаю, я понял это. Мне нужно было создать прокси-объект с именем поля, указанным в интерфейсе:
var finalDecisionList = new { FinalDecisionList = finalDecision };
var finalDecisionSend = Impromptu.ActLike<IFinalDecisionEvaluate>(finalDecisionList);
Кажется, это работает. Итак, мы учимся!