1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-29 14:35:45 +00:00

Héritage + YAML

This commit is contained in:
Yan Maniez 2019-01-16 13:59:05 +01:00
parent bb6e12ede4
commit 396a6f960a
2 changed files with 47 additions and 2 deletions

View file

@ -8,6 +8,10 @@ using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Xml;
using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
namespace AideDeJeuLib
{
@ -115,6 +119,8 @@ namespace AideDeJeuLib
[DataMember]
public string ParentName { get; set; }
[YamlIgnore]
[IgnoreDataMember]
[Ignore]
public string ParentNameLink
@ -143,6 +149,8 @@ namespace AideDeJeuLib
public int NameLevel { get; set; }
[DataMember]
public string AltName { get; set; }
[YamlIgnore]
[IgnoreDataMember]
public string AltNameText
{
@ -168,9 +176,43 @@ namespace AideDeJeuLib
}
[DataMember]
public string Source { get; set; }
[YamlIgnore]
[DataMember]
public virtual string Markdown { get; set; }
[DataMember]
public string FullText { get; set; }
[IgnoreDataMember]
[YamlIgnore]
public Dictionary<string, Type> ClassMapping = new Dictionary<string, Type>()
{
{ nameof(Generic), typeof(Generic) },
};
[IgnoreDataMember]
[YamlIgnore]
public string Yaml
{
get
{
var serializer = new SerializerBuilder()
.WithTagMapping($"!{nameof(MonsterHD)}", typeof(MonsterHD))
.EnsureRoundtrip()
.WithNamingConvention(new PascalCaseNamingConvention())
.Build();
return serializer.Serialize(this);
}
}
[IgnoreDataMember]
[YamlIgnore]
public string YamlMarkdown
{
get
{
return $"---\n{Yaml}---\n{Markdown}";
}
}
}
}

View file

@ -321,8 +321,11 @@ namespace AideDeJeuCmd
var monstersVO = await context.MonstersVO.ToListAsync();
var spells = await context.Spells.ToListAsync();
var serializer = new SerializerBuilder().WithNamingConvention(new PascalCaseNamingConvention()).Build();
var yaml = serializer.Serialize(spells.FirstOrDefault());
var serializer = new SerializerBuilder().WithTagMapping("!MonsterHD", typeof(MonsterHD)).EnsureRoundtrip().WithNamingConvention(new PascalCaseNamingConvention()).Build();
var deserializer = new DeserializerBuilder().WithTagMapping("!MonsterHD", typeof(MonsterHD)).WithNamingConvention(new PascalCaseNamingConvention()).Build();
var yaml = serializer.Serialize(monsters.FirstOrDefault());
var sr = new StringReader(yaml);
var deser = deserializer.Deserialize(sr);
Console.WriteLine(yaml);
}