我对反射相当陌生,如果可能的话,我想知道如何创建一个类的实例,然后向该类添加属性,设置这些属性,然后再阅读它们。我没有任何代码,因为我什至不知道如何开始。 C# 或 VB 都可以。
谢谢
编辑:(详细说明)
我的系统有一个动态表单创建器。我的一位同事要求可以通过 Web 服务访问表单数据。我的想法是创建一个类(基于动态表单)向类添加属性(基于表单字段)设置这些属性(基于为这些字段输入的值)然后返回 Web 服务中的类。
此外,Web 服务将能够设置类中的属性,并最终将这些更改提交给数据库。
最佳答案
如果你的意思是动态创建一个类,那么两个选项是:
- Reflection.Emit - 困难,快速创建类(class)
- CodeDom - 难度更低,创建类的速度更慢
如果你的意思是创建一个现有类的实例,那么从Activator.CreateInstance开始创建对象的实例,然后查看 Type 上的方法例如GetProperty这将返回 PropertyInfo你可以调用GetValue和 SetValue上。
更新:对于您描述的场景,从 Web 服务返回动态数据,我建议不要使用这种方法,因为您很难编写代码,而且静态类型的语言也很难使用。相反,正如评论和其他答案之一所建议的那样,某种字典可能是更好的选择。
(请注意,当我说返回某种字典时,我是在比喻而不是字面意思,即返回在概念上与字典相同的东西,例如键值对列表。我不会直接推荐返回一个(即使您使用的是支持此功能的 WCF),因为最好完全控制您返回的 XML。)
关于c# - .NET 反射创建类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/799022/