私はこのような文字列を持っています:
typeStr = label1.GetType().ToString();
type
今度は、このコントロールの を で逆に取得したいと思いますtypeStr
。
私はいくつかの機能を試してみType.GetType(typeStr)
ましたが、役に立ちません。
を取得する簡単な方法はありますtype
か?
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
}
このような文字列からのみその型のインスタンスを取得したいということですか
classname instance = Activator.CreateInstance("<assemblyname>","<classname>") as classname;
で名前を取得してみてください
typeStr = label1.GetType().GetFullName();
それで
type = Type.GetType(typeStr);