我正在使用C#和XAML为windows创建一种界面构建器,并且想知道是否可以用字符串创建变量名(Label label_string =" Something&#34 ;;)。例如,每次创建新标签时,变量都将命名为{label1,label2,label3,...}。我只想创建一个标签数组并更改每个标签的Name属性,但我想知道我的其他想法是否可行。
答案 0 :(得分:1)
简短的回答是否定的。如果你想坚持使用CLR和强类型对象,那么这些对象是在编译时定义的,之后不能改变它们的定义。
现在,如果你想变得更复杂,有办法使用反射,发出新的IL / Wrapper类,以及类似的东西。还有DLR,您可以在其中使用动态对象(ala Javascript),其中对象的定义在运行时而不是编译时定义。但是对于你想要做的事情,这可能比维护一组Label
控件更加复杂和低效,你可以在其中更改你所描述的Name
属性。
<强>更新强>
尝试解释你是如何实际做到这一点的,因为它很复杂,所以超出了SO答案的范围。但是如果你感兴趣的话,你可以研究几种方法。
其中一个是实际生成c#代码并在运行时通过编译器运行它,然后动态加载该程序集。一个快速的Bing!搜索显示此链接描述了类似的内容:http://support.microsoft.com/kb/304655
另一种方法是使用System.Reflection.Emit
命名空间发出CIL指令以构建内存中的程序集。再次,快速的Bing!搜索出现了这个链接,它谈到了这种事情:http://msdn.microsoft.com/en-us/library/3y322t50(v=vs.110).aspx
注意:以上链接并不是关于如何提出要求的准确解释,但是它们会让您了解该方法,您需要做更多的研究以找出如何适应它根据您的具体情况。