Итак, у меня есть анонимный тип, который я использовал ToString и поместил в файл. Это выглядит так (и замечательно похоже на JSon ...):

{ Name = Name, Description = Description, Status = Pending, Key = Template, SubmittedBy = MyName, Identity = 2fb7a40b-e07a-4f1a-a48b-2c2720567f35 }

Теперь я хочу пойти другим путем (отредактировать: взять строку из файла и поместить ее в формат, который я могу поместить в известный объект) и поместить ее в анонимный тип (который имеет те же свойства, но я не неважно, подходят ли они для каста или что-то в этом роде, я просто хочу быстрый способ сделать что-то вроде.

AnonObject = GetObjectFromFile(blah);
RealObject.Name = AnonObject.Name;

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

c#
1
Sean 27 Июн 2012 в 19:07
Identity гид? Похоже на то.
 – 
BoltClock
27 Июн 2012 в 19:08
2
Вы можете использовать парсер JSON, например JSON.net.
 – 
jrummell
27 Июн 2012 в 19:09
Идентичность - это руководство. Я не хочу добавлять библиотеку, если могу.
 – 
Sean
27 Июн 2012 в 19:13

1 ответ

Лучший ответ

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

Если вы используете .NET 4, вы можете использовать ExpandoObject и dynamic; в противном случае я бы, вероятно, просто использовал Dictionary<string, object> и изменил это:

RealObject.Name = AnonObject.Name;

К

RealObject["Name"] = AnonObject.Name;

(Или наоборот. Не совсем понятно, что вы делаете.)

6
Jon Skeet 27 Июн 2012 в 19:10
Сериализируется ли ExpandoObject?
 – 
Sean
27 Июн 2012 в 19:13
Ладно, это не так. Я просто вручную проанализирую строку в RealObject, а не буду использовать посредника. Спасибо.
 – 
Sean
27 Июн 2012 в 19:22