Объединение динамических типов - PullRequest
1 голос
/ 13 октября 2011

Это может быть глупый вопрос, но я хотел бы знать, есть ли способ, которым я мог бы сделать это.

Чтобы упростить процесс импорта большого количества файлов, разделенных пробелом, я придумал простую схему описания макета в динамическом типе и выбросил его в анализатор, который вызывает делегат.

Макет выглядит так:

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 Ответ

3 голосов
/ 13 октября 2011

Вы пытались использовать dynamic вместо var? Это должно отложить ввод текста до времени выполнения, поэтому ваши потенциальные объекты не должны совпадать. var является просто заменой любого статического типа; на самом деле это вообще не динамично.

...