Как я могу разобрать Yaml в полученную коллекцию с помощью Yamldotnet?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу разобрать Yaml в полученную коллекцию с помощью Yamldotnet?

Сообщение Anonymous »

Используя yamldotnet, я пытаюсь десериализировать следующую yaml: < /p>

Код: Выделить всё

Collection:
- Type: TypeA
TypeAProperty: value1
- Type: TypeB
TypeBProperty: value2
Свойство Type является обязательным свойством для всех объектов в рамках коллекции . Остальные свойства зависят от типа. < /P>

Это моя идеальная модель объекта: < /p>

Код: Выделить всё

public class Document
{
public IEnumerable Collection { get; set; }
}

public interface IBaseObject
{
public string Type { get; }
}

public class TypeAClass : IBaseObject
{
public string Type { get; set; }
public string TypeAProperty { get; set; }
}

public class TypeBClass : IBaseObject
{
public string Type { get; set; }
public string TypeBProperty { get; set; }
}
< /code>

На основе моего чтения, я думаю, что лучше всего использовать пользовательский деессериализатор узла, полученный от Inodedeserializer < /code>. В качестве доказательства концепции я могу сделать это: < /p>

public class MyDeserializer : INodeDeserializer
{
public bool Deserialize(IParser parser, Type expectedType, Func nestedObjectDeserializer, out object value)
{
if (expectedType == typeof(IBaseObject))
{
Type type = typeof(TypeAClass);
value = nestedObjectDeserializer(parser, type);
return true;
}

value = null;
return false;
}
}
Моя проблема теперь заключается в том, как динамически определить тип для выбора перед вызовом NestEdObjectDeserializer .

При использовании JSON.NET я смог использовать CustomCreationConverter , читать Sub-json в jobrege , определить свой тип>, а затем CodeReeReRe, а затем CodeReeChere>, CodeReeReRer>, CodeReeRer>, CODEREARTERTERTERTERTERTERTERTERTERTERTER jobject и повторный уравнение объекта.

Есть ли способ читать, сбрасывать, а затем перечитать nestestobjectdeserializer ?

есть другой тип объекта, который я могу назвать на NestedObjectDeSerializ анализ производного типа?

Подробнее здесь: https://stackoverflow.com/questions/429 ... yamldotnet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»