繁体   English   中英

如何获取字符串名称来解析对象(即从它的意义上来说)

[英]How to get a string name to resolve to an object (i.e. in the sense of what it is)

例如,我可以做类似的事情:

switch (myString)
case "rectangle":
 o = new rect();
 break;
case "ellipse"
 etc...

但是我怎么不做上面的事情,即只有一行代码直接从字符串中获取对象。 想象一下,例如,一个按钮以及用户点击它时所说的任何内容,它会显示所显示的文本并从中创建一个对象。

如果名称与字符串完全相同 ,则可以执行以下操作:

using System;
using System.Reflection;

class Example
{
    static void Main()
    {
        var assemblyName = Assembly.GetExecutingAssembly().FullName;
        var o = Activator.CreateInstance(assemblyName, "Example").Unwrap();
    }
}

一个更简单的方法看起来像这样:

using System;
using System.Reflection;

class Example
{
    static void Main()
    {
        var type = Assembly.GetExecutingAssembly().GetType("Example");
        var o = Activator.CreateInstance(type);
    }
}

但请记住,这是一个非常简单的示例,它不涉及名称空间,强名称程序集或大型项目中出现的任何其他复杂事物。

他说,

你有没有尝试过Activator.CreateInstace(“assemblyname”,“typename”);

Factory模式会将代码与字符串分离。 请查看这个dofactory页面,了解UML和Factory模式的C#示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM