gpt4 book ai didi

c# - 我可以在 C# 中使用 "class"类型吗?

转载 作者:可可西里 更新时间:2023-11-01 09:12:14 25 4
gpt4 key购买 nike

我想知道是否有可能做某事。我有一个读取 xml 文件并根据文件内容向表单添加控件的函数。像这样的 xml 节点将创建它:

<Button Top="300" Left="100">Automatic</Button>

如果我在编辑模式下添加了控件,我有一个功能可以将控件保存回 xml 文件。它正在工作,但我想知道是否有更简单的方法。目前,我有看起来像这样的代码来创建每个控件的实例:

            switch (xmlchild.Name)
{
// Create a new control whose type is specified.
case "Button":
c = new Button();
break;
case "Label":
c = new Label();
break;
default:
c = null;
break;
}

但是,当我想使用更多类型的控件时,我将需要不断添加 switch case。我可以做一些只接受文本并添加该类型的控件的事情吗?如果有任何反馈,我将不胜感激!

谢谢!

最佳答案

如果您控制 XML 文件的内容,那么可以。你可以使用:

string fullNameSpace = "System.Windows.Controls.";
Type controlType = Type.GetType( fullNameSpace + xmlchild.Name );
if( controlType != null )
{
// get default constructor...
ConstructorInfo ctor = controlType.GetConstructor(Type.EmptyTypes);
object control = ctor.Invoke(null);
}

您还可以使用 Activator 类稍微清理一下:

object control = Activator.CreateInstance( "System.Windows.Presentation", 
xmlchild.Name );

或者,如果您可以创建有效的 XAML 文件,则可以使用 XamlReader 来恢复控件树。

关于c# - 我可以在 C# 中使用 "class"类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3141956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com