我试图基于将从用户界面中检索到的字符串创建类的实例,然后我要访问该类的实例的属性。

这是我到目前为止的概述-

namespace MamdaAdapter
{
    public interface IExchange
    {
        string GetTransport();
    }
}


namespace MamdaAdapter
{
    public class Exchange
    {
        public class Arca : IExchange
        {
            private const string _Transport = "tportname";

            public string GetTransport()
            {
                return _Transport;
            }
        }


        public static IExchange DeriveExchange(string ExchangeName)
        {
            IExchange SelectedExchange = (IExchange)Activator.CreateInstance(Type.GetType(ExchangeName));

            return SelectedExchange;
        }
    }
}



namespace MyUserInterface
{
    public class MainForm
    {
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            IExchange SelectedExchange = Exchange.DeriveExchange("Exchange.Arca");

            Console.WriteLine(SelectedExchange.GetTransport());
        }
    }
}


更新:
现在,我收到一个异常,该异常对我来说意味着“值不能为空”,这意味着在给定提供的字符串的情况下,它无法创建该类的实例-

最佳答案

这里的问题是如何指定类的名称:

首先,指定名称空间。其次,由于Arca是内部类,因此必须使用“ +”代替“。”。

(...) = Exchange.DeriveExchange("MamdaAdapter.Exchange+Arca");

09-06 00:38