この構成方法は、必要なものを定義したり、構成にバリデーターを追加したりできるため、優れています。
ただし、属性を持つ要素や単純な要素のコレクションよりも複雑なものをマッピングし始めると、1 つの大きな苦痛になります。
クラス/モデルを作成し、それを検証などすべてを使用して構成セクションに直接マッピングするなど、より単純なものが出てきていませんか、または誰かがより単純なソリューションを思いついていますか?
たとえば、これについては、ConfigurationSection をあきらめて、xml と xsd の検証を実装するところまで行きました..しかし、私はそれについて満足していません
実際には最初に ( ConfigurationSection をあきらめた後) DataAnnotations を使用して ViewModel として実装しようとしましたが、コントローラーのコンテキストになくても validate メソッドを呼び出し、ネストされたモデルを検証すると、それ自体の問題が発生しました...
[XmlRoot("Configuration", Namespace = "urn:Configuration")]
public class Configuration
{
[XmlElement("Common")]
public Common Common { get; set; }
[XmlElement("FaceBook")]
public FaceBook FaceBook { get; set; }
[XmlArray("Domains")]
public List<Domain> Domains { get; set; }
[XmlArray("Links")]
public List<Link> Links { get; set; }
}
public class Common
{
[XmlAttribute("analyticsId")]
public string AnalyticsId { get; set; }
[XmlAttribute("analyticsDomain")]
public string AnalyticsDomain { get; set; }
[XmlAttribute("segmentationId")]
public int SegmentationId { get; set; }
[XmlAttribute("serviceId")]
public int ServiceId { get; set; }
}
public class FaceBook
{
[XmlAttribute("apiKey")]
public string ApiKey { get; set; }
[XmlAttribute("appId")]
public long AppId { get; set; }
[XmlAttribute("canvas")]
public string Canvas { get; set; }
}
public class Replacement
{
[XmlAttribute("key")]
public string Key { get; set; }
[XmlAttribute("value")]
public string Value { get; set; }
}
public class Link
{
[XmlAttribute("key")]
public string Key { get; set; }
[XmlAttribute("value")]
public string Value { get; set; }
}
public class Domain
{
[XmlAttribute("host")]
public string Host { get; set; }
[XmlAttribute("culture")]
public string Culture { get; set; }
[XmlAttribute("paymentRequired")]
public bool PaymentRequired { get; set; }
[XmlAttribute("paymentDocumentId")]
public int PaymentDocumentId { get; set; }
[XmlAttribute("paymentTimeout")]
public int PaymentTimeout { get; set; }
[XmlAttribute("default")]
public bool Default { get; set; }
[XmlArray("Replacements")]
public List<Replacement> Replacements { get; set; }
[XmlElement("AgeRange")]
public List<AgeRange> AgeRanges { get; set; }
}
public class AgeRange
{
[XmlAttribute("ageMin")]
public int AgeMin { get; set; }
[XmlAttribute("ageMax")]
public int AgeMax { get; set; }
[XmlAttribute("botPercentage")]
public int BotPercentage { get; set; }
[XmlAttribute("genderPercentage")]
public int GenderPercentage { get; set; }
[XmlAttribute("anonymousDomain")]
public string AnonymousDomain { get; set; }
[XmlAttribute("certifiedDomain")]
public string CertifiedDomain { get; set; }
[XmlElement("Salon")]
public List<Salon> Salons { get; set; }
}
public class Salon
{
[XmlAttribute("name")]
public string Name { get; set; }
[XmlAttribute("default")]
public bool Default { get; set; }
[XmlAttribute("optGroup")]
public string OptGroup { get; set; }
}
検証のために ConfigurationSection と DataAnnotation のようなものを使用したいのですが、上記の例では複雑すぎます。
Model の正確性を検証しながら、より単純なものを見つけたり知っている人はいますか?
ありがとう