结合动态类型

时间:2011-10-13 18:00:51

标签: c# c#-4.0 dynamic-typing

这可能是一个愚蠢的问题,但我很想知道我是否有办法做到这一点。

为了简化导入大量空格分隔文件的过程,我提出了一个简单的方案来描述动态类型的布局,并将其抛给调用委托的解析器。

布局看起来像这样:

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种类型都有根本不同。

任何想法都将受到赞赏:)

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用dynamic代替var?这应该延迟打字直到运行时,所以你的潜在对象不必匹配。 var只是任何静态类型的替代品;它根本不是动态的。