Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET反射创建类属性_C#_.net_Vb.net_Reflection - Fatal编程技术网

C# .NET反射创建类属性

C# .NET反射创建类属性,c#,.net,vb.net,reflection,C#,.net,Vb.net,Reflection,我对反射相当陌生,如果可能的话,我想知道如何创建一个类的实例,然后向该类添加属性,设置这些属性,然后稍后阅读它们。我没有任何代码,因为我甚至不知道如何开始这项工作。C或VB也可以 多谢各位 编辑:(详细说明) 我的系统有一个动态表单创建者。我的一位同事要求表单数据可以通过web服务访问。我的想法是创建一个类(基于动态表单)向类添加属性(基于表单字段)设置这些属性(基于这些字段的输入值),然后在web服务中返回该类 此外,web服务将能够设置类中的属性,并最终将这些更改提交给db。如果您指的是动态

我对反射相当陌生,如果可能的话,我想知道如何创建一个类的实例,然后向该类添加属性,设置这些属性,然后稍后阅读它们。我没有任何代码,因为我甚至不知道如何开始这项工作。C或VB也可以

多谢各位

编辑:(详细说明)

我的系统有一个动态表单创建者。我的一位同事要求表单数据可以通过web服务访问。我的想法是创建一个类(基于动态表单)向类添加属性(基于表单字段)设置这些属性(基于这些字段的输入值),然后在web服务中返回该类


此外,web服务将能够设置类中的属性,并最终将这些更改提交给db。

如果您指的是动态创建类,则有两个选项:

  • -创建类的难度大、速度快
  • -创建类的难度较小,速度较慢
如果您的意思是创建现有类的实例,那么从开始创建对象的实例,然后查看其上的方法,例如,该方法将返回一个可调用的实例


更新:对于您描述的从web服务返回动态数据的场景,我建议您不要使用这种方法,因为您很难编写代码,静态类型的语言也很难使用。相反,正如评论和其他答案中所建议的,某种词典可能是更好的选择


(请注意,当我说返回某种字典时,我说的是比喻而不是字面意思,即返回概念上与字典相同的内容,例如键值对列表。我不建议直接返回一个(即使您使用的是支持此功能的WCF)因为通常最好完全控制返回的XML。)

如果您是指动态创建类,则有两个选项:

  • -创建类的难度大、速度快
  • -创建类的难度较小,速度较慢
如果您的意思是创建现有类的实例,那么从开始创建对象的实例,然后查看其上的方法,例如,该方法将返回一个可调用的实例


更新:对于您描述的从web服务返回动态数据的场景,我建议您不要使用这种方法,因为您很难编写代码,静态类型的语言也很难使用。相反,正如评论和其他答案中所建议的,某种词典可能是更好的选择


(请注意,当我说返回某种字典时,我说的是比喻而不是字面意思,即返回概念上与字典相同的内容,例如键值对列表。我不建议直接返回一个(即使您使用的是支持此功能的WCF)因为通常最好完全控制返回的XML。)

Eric Gunnerson的书(程序员C#入门)中有一些关于这个主题的重要信息。具体见第14页及以后。他概述了实现动态类/代码生成的两种主要方法(CodeDOM和Reflection.Emit命名空间)。本文还讨论了这两种方法的难度和性能。通读一遍,你应该会找到你可能需要的所有东西。

埃里克·冈纳森(Eric Gunnerson)的书(程序员C#入门)中有一些关于这个主题的好信息。具体见第14页及以后。他概述了实现动态类/代码生成的两种主要方法(CodeDOM和Reflection.Emit命名空间)。本文还讨论了这两种方法的难度和性能。通读一遍,你应该找到你可能需要的所有东西。

真正的问题是,你需要用这些属性做什么

用例是什么?您是否需要以某种方式将这些属性绑定到UI?使用什么样的技术?(WPF、Windows窗体?)

是否只是需要在运行时收集一组键/值对?那么也许一本简单的字典就可以了


请详细说明您需要什么,我相信这里的人可以想出很多方法来帮助您,但是如果没有更多的上下文,很难给出一个好的答案。

真正的问题是,您需要使用这些属性做什么

用例是什么?您是否需要以某种方式将这些属性绑定到UI?使用什么样的技术?(WPF、Windows窗体?)

是否只是需要在运行时收集一组键/值对?那么也许一本简单的字典就可以了


如果你能详细说明你需要什么,我相信这里的人们会想出很多方法来帮助你,但是,如果没有更多的上下文,就很难给出一个好的答案。

我知道这被过分简化了,为什么不直接亲吻并生成所需的Xml以通过Web服务返回,然后解析返回的Xml以填充数据库呢


我的理由是,出于您建议这样做的扩展原因,我可以看到需要动态类的价值或原因?

我知道这过于简化了,为什么不直接亲吻并生成所需的Xml以通过Web服务返回,然后解析返回的Xml以填充数据库


我的理由是,出于您建议这样做的扩展原因,我可以看到需要动态类的价值或原因?

性能差异是前期成本,一旦说了所有的话,由Emit或CodeDom生成的代码在性能上应该是相似的。您不允许在web服务中返回字典。此外,如果您使用数组,则会得到类似于:“xmlns:xsd=”“xmlns=”“>blaj的结果