【发布时间】:2011-10-13 18:00:51
【问题描述】:
这可能是一个愚蠢的问题,但我很想知道是否有办法做到这一点。
为了简化导入大量以空格分隔的文件的过程,我想出了一个简单的方案来描述动态类型中的布局并将其扔给调用委托的解析器。
布局如下所示:
var layout = new
{
Code = new SDFColumn() { Start = 0, Length = 20 },
Name = new SDFColumn() { Start = 20, Length = 3 }
// etc
};
一切都很好。我现在处于需要导入 2 个非常大的 SDF 的情况,它们的结构 85% 相同,最后除了一些差异。
有没有办法将一个布局附加到另一个,例如:
var layoutCommon = new
{
/* Common fields */
};
var layoutFile01 = new
{
/* Changes for first file type */
};
var layoutFile02 = new
{
/* Changes for the second file type */
};
var finalLayout = /* ??? */;
我意识到行不通的一件事是:
var completeLayout = { };
if(file01)
completeLayout = { /* everything */ };
else
completeLayout = { /* everything */ };
这显然行不通,因为所有 3 种类型根本不同。
任何想法都将不胜感激:)
【问题讨论】:
-
使用继承怎么样?将所有公共字段放在基类中,将特定字段放在派生类中
-
@dano_ramos,我意识到可以为每个布局创建一个类,但我们的想法是避免这样做,并且只需在我需要的函数中动态定义布局的简单性它,因此我沿着这条路走。
-
听起来确实更灵活。现在你让我感兴趣了
-
您仍然可以拥有一个具有“标准”布局细节的通用基类。然后根据您使用的任何布局类型动态覆盖相关属性。
-
这是一个比简单地覆盖属性更困难的问题。一个文件可能有一个标题:“姓名日期员工”,另一个可能有“猫狗鸡桌锯”。
标签: c# c#-4.0 dynamic-typing