Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CSV数据(未知格式)通过业务类转换为XML数据(固定格式)。使用反射是一个好主意吗?_C#_Xml_Reflection_Csv_Business Objects - Fatal编程技术网

C# CSV数据(未知格式)通过业务类转换为XML数据(固定格式)。使用反射是一个好主意吗?

C# CSV数据(未知格式)通过业务类转换为XML数据(固定格式)。使用反射是一个好主意吗?,c#,xml,reflection,csv,business-objects,C#,Xml,Reflection,Csv,Business Objects,我正在开发一个构建相当大的XML文件(电子商务提供)的库 我使用业务类(如ProductInfo、PriceInfo等),并从中生成结果XML 我的最新任务是实现允许从CSV输入文件生成此XML的功能 CSV文件没有任何预定义的格式,用户的任务是(我们提供了一个允许他们这样做的应用程序)以固定的XML格式将所有CSV列映射到它们各自的对应项中 因此,基本上他们的工作是将每一列分配给我的一个业务类字段:“此列中的所有数据都进入ProductInfo.ShortDescription等。” 我们的格

我正在开发一个构建相当大的XML文件(电子商务提供)的库

我使用业务类(如ProductInfo、PriceInfo等),并从中生成结果XML

我的最新任务是实现允许从CSV输入文件生成此XML的功能

CSV文件没有任何预定义的格式,用户的任务是(我们提供了一个允许他们这样做的应用程序)以固定的XML格式将所有CSV列映射到它们各自的对应项中

因此,基本上他们的工作是将每一列分配给我的一个业务类字段:“此列中的所有数据都进入ProductInfo.ShortDescription等。”

我们的格式将来可能会发生变化——它会不断更新和扩展——因此我希望我的实现尽可能通用

我考虑的解决办法如下:

  • 库返回所有可用/必需字段的名称
  • 我们的用户将CSV列映射到这些字段
  • 我实现了一个自定义属性(包含一个字段名-字符串),并用它标记业务类中的所有字段。因此,一旦他们映射了所有列并以CSV格式提交了数据,我的库就会开始创建ProductInfos等。将输入值分配给由属性名称标识的字段。这将通过反思来实现

这是个好主意吗?我对性能有一些担心(我知道反射很慢),尽管我不确定这会是一个多大的问题。还有什么我应该注意的问题吗?有更好的替代方案吗?

为什么不建立一个web服务来为最终用户处理这些问题呢?如果对通过服务公开的业务对象进行更改,WSDL服务的模式将自动更新。这将使您能够通过模式自动强式键入数据。

尽管这些XML文件将在以后发送,但毫无疑问,这是一个桌面库和应用程序,我必须在本地执行。我对项目架构没有发言权,这在很多方面都是次优的:)(不仅仅是imo)