组合动态类型

本文关键字:类型 动态 组合 | 更新日期: 2023-09-27 18:11:06

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

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

一个布局看起来像这样:

var layout = new 
{
    Code = new SDFColumn() { Start = 0, Length = 20 },
    Name = new SDFColumn() { Start = 20, Length = 3 }
    // etc
};

一切都很好。我现在的情况是,我有两个非常大的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 */ };

显然这行不通,因为这三种类型本质上是不同的。

组合动态类型

您是否尝试过使用dynamic而不是var ?这会将键入延迟到运行时,因此您的潜在对象不必匹配。var只是任何静态类型的替代品;它不是动态的