Я бы хотел создать динамически создаваемый объект цепочки, который мог бы выглядеть примерно так:
Config.API.Host
Моя цель - создать простой интерфейс, который можно легко расширить (возможно, не лучший подход (?)). Я уже пытался работать ExpandoObject
, но мне это не помогло, так как я хочу, чтобы свойства были открыты для общественности. Я новичок в C# и даже не знаю, возможно ли это на самом деле.
Пока сделано:
using System.Collections.Generic;
using System.Dynamic;
namespace ExpandoTest
{
public class Config
{
private Dictionary<string, IConfigContract> options;
public Config()
{
options.Add("API", new API());
}
public ExpandoObject Build()
{
dynamic exp = new ExpandoObject();
foreach (KeyValuePair<string, IConfigContract> entry in options)
{
exp[entry] = value;
}
return exp;
}
}
}
namespace ExpandoTest
{
public class API : IConfigContract // empty Interface, just for use case
{
public string Foo = "Bar";
}
}
using System;
namespace ExpandoTest
{
internal class Program
{
public static void Main(string[] args)
{
var log = new Config().Build();
Console.WriteLine(log.API.Foo);
Console.ReadLine();
}
}
}