1

私はこのような文字列を持っています:

typeStr = label1.GetType().ToString();

type今度は、このコントロールの を で逆に取得したいと思いますtypeStr

私はいくつかの機能を試してみType.GetType(typeStr)ましたが、役に立ちません。

を取得する簡単な方法はありますtypeか?

4

3 に答える 3

1

Typeフルネームを渡すことができます

Type type = Type.GetType("System.Windows.Forms.Label");

これにより、タイプが作成され、使用できるオブジェクトのインスタンスが作成されますActivator.CreateInstance

object obj = Activator.CreateInstance(type);



Typeロードされた作業AppDomain.CurrentDomain.GetAssemblies()

   private void btnAddDymanicLabel_Click(object sender, EventArgs e)
    {
        Type type = GetTypeNameFromDomain("System.Windows.Forms.Label");
        Label lbl = (Label) Activator.CreateInstance(type);
        this.Controls.Add(lbl);
        lbl.Text = "dynamic created control";


    }

    private Type GetTypeNameFromDomain(string typename)
    {
        return AppDomain.CurrentDomain.GetAssemblies().SelectMany(assembly => assembly.GetTypes().Where(type => type.FullName == typename)).FirstOrDefault();
    }

簡単な例:

static void Main(string[] args)
{
    Type type = Type.GetType("System.Int32");
    object obj = Activator.CreateInstance(type);
    int num = (int) obj;
    num = 10;
    Console.WriteLine(num); // prints : 10
}
于 2013-03-10T08:47:34.047 に答える
0

このような文字列からのみその型のインスタンスを取得したいということですか

classname instance = Activator.CreateInstance("<assemblyname>","<classname>") as classname;
于 2013-03-10T08:53:12.800 に答える
0

で名前を取得してみてください

typeStr = label1.GetType().GetFullName();

それで

type = Type.GetType(typeStr);
于 2013-03-10T08:45:27.943 に答える