Динамически создаваемый объект в C# - PullRequest
0 голосов
/ 14 февраля 2020

Я бы хотел создать динамически создаваемый объект цепочки, который мог бы выглядеть примерно так:

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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...