none
把字符串作为参数来初始化不同的类

    问题

  • 我想通过字符串的变化来初始化不同的类

    例如字符串的值是: "Sa" 我想初始化类 GetSystemStatus.

    例如字符串的值是 "sw" 我想初始化类SystemRotate.

    请问怎样才能做到?

    2016年4月10日 7:47

答案

  • 你好,

    我猜你是想是通过字符串,来得到到一个类的实例, 如果是的啊,你可以使用反射来做, 可以参考以下的代码,看是不是对你有帮助。

    public class SomeAttribute : Attribute
    {
        public string Input { get; set; }
    }
    
    [Some(Input = "sw")]
    public class SystemRotate
    {
    
    }
    
    public object Get(string input)
    {
        // 定义在那里可以查询到类
        var type = (from assembly in AppDomain.Current.GetAssemblies()
                   from type in assembly.GetTypes()
                   let att = type.GetCustomAttribute<SomeAttribute>()
                   where att != null && att.Input == input
                   select type).FirstOrDefault();
        return Activator.CreateInstance(type);
    }

    Best regards,

    Cole Wu

    2016年4月10日 14:05
    版主