簡體   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