0

我在 C# 中使用 Impromptu,我有以下情况。

这是我要填充的课程:

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'

所以本质上,我需要简单地将我的列表对象映射到接口。有人可以帮忙解决这个错误吗?我无法弄清楚不匹配在哪里。

谢谢!

4

1 回答 1

0

啊,我想我明白了。我需要使用接口中指定的字段名称创建一个代理对象:

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

这似乎行得通。所以我们学习!

于 2020-06-19T13:20:41.463 回答