C# 如何定义EDI数据结构C090

C# 如何定义EDI数据结构C090,c#,edi,C#,Edi,我正在尝试创建一个API,该API允许我在C#中创建和解析EDI消息 作为概念证明和保持简单,我试图编写一个小型类库来创建一个C090数据结构,您可以看到 我甚至不知道如何为3286数据元素创建属性,因为其中有五个属性。我真的不想为此使用数组或列表,我想知道是否有任何可能的方法可以将它们创建为五个属性,但不必使用下划线或数字对它们进行标记?我已经找到了一种方法,通过使用类属性定义组合的所有元素来创建数据结构 调用Append(Element)方法时,它将检查定义以查看Element是否是组合的一

我正在尝试创建一个API,该API允许我在C#中创建和解析EDI消息

作为概念证明和保持简单,我试图编写一个小型类库来创建一个C090数据结构,您可以看到


我甚至不知道如何为3286数据元素创建属性,因为其中有五个属性。我真的不想为此使用数组或列表,我想知道是否有任何可能的方法可以将它们创建为五个属性,但不必使用下划线或数字对它们进行标记?

我已经找到了一种方法,通过使用类属性定义组合的所有元素来创建数据结构

调用
Append(Element)
方法时,它将检查定义以查看
Element
是否是组合的一部分,如果不是,则抛出异常,否则将添加到列表中,例如:

C090 c = doc.CreateComposite<C090>();
E3477 e = doc.CreateElement<E3477>();
e.Value = CodesList.E3477.Code001;
c.Append( e );
c090c=doc.CreateComposite();
E3477 e=doc.CreateElement();
e、 值=CodesList.E3477.Code001;
c、 附加(e);

到目前为止似乎效果很好

任何复合元素类型都会遇到这种情况。NAD段中的C080也是如此。您可以从源代码中获得最多5条信息,以构成整个元素。根据标准,第一个子元素是强制性的。我不完全确定我是否理解您试图做的事情,但在我看来,您在源代码端给它起什么名字并不重要(如果您正在创建文档)。基于分隔符分析入站文档更简单。我认为您的问题可以通过一些示例代码来改进。@Andrew我想您是对的,这可能不重要,但我希望尽量保持属性名称与原始数据元素尽可能接近。我想我会试着给它们编号,看看结果如何。@mike:编号的缺点是,当一个新的子元素被添加到一个复合编号中时,段的其余部分会出错。(这是一个问题还是很重要?取决于你的判断。)看看机器人,你可能会对此有所了解()。在映射脚本中,可以通过调用访问解析的edi消息(认为它接近API?)。类似的逻辑可用于编写edi消息。