Преобразовать существующий тип в анонимный тип и добавить новое свойство - PullRequest
4 голосов
/ 30 января 2009

Можно ли взять существующий тип и создать из него анонимный тип с дополнительными свойствами? Например (в VB)

Public Class Person
  Public Name As String
  Public Age As Integer
End Class

Dim p As New Person With {.Name = "James", .Age = 100}

Dim n = New With {.ShoeSize = 10}

Я хочу, чтобы второй объект (n) клонировал все свойства p, а затем добавил новое свойство (ShoeSize).

Возможно ли это?

Большое спасибо

Джеймс

Ответы [ 2 ]

2 голосов
/ 30 января 2009

Нет синтаксиса для этого в C #. Вам придется создать анонимный тип самостоятельно со всеми свойствами.

0 голосов
/ 09 марта 2015

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

То есть, если они вернули string.Join(", " , from p in ps select "." + p.Name + " = " + VarName + "." + p.Name), вы могли бы, по крайней мере, сохранить некоторые данные.

Пример с переменными в OP: p.AllFieldsVb("p") возвращает ".Name = p.Name, .Age = p.Age".

...