我目前正在编写一些代码,使用C#中的反射将一般对象保存到XML。问题是在某些对象中读取XML时是结构,我不知道如何初始化该结构。对于我可以使用的类(class)ConstructorInfoconstructor=SomeClass.GetConstructor(Type.EmptyTypes);但是,对于一个结构体,没有不带参数的构造函数,所以上面的代码将构造函数设置为null。我也试过了SomeStruct.TypeInitializer.Invoke(null)但这会抛出一个成员访问异常。谷歌没有给出有希望的命中率。任何帮助将不胜感激。 最佳答案
我有一个包含很多静态类的静态类。每个内部静态类都包含字段。我想获取所有内部静态类的所有字段。publicstaticclassMyClass{publicstaticclassMyInnerClass1{publicconststringField1="abc";publicconststringField2="def";publicconststringField3="ghi";}publicstaticclassMyInnerClass2{publicconstintField1=1;publicconstintField2=2;publicconstintField3=3;}..
我在通过反射调用带有out参数的重载静态方法时遇到一些问题,希望得到一些指示。我希望动态创建一个类型,如System.Int32或System.Decimal,然后调用静态TryParse(string,outx)方法。下面的代码有两个问题:t.GetMethod("TryParse",newType[]{typeof(string),t})未能返回我期望的MethodInfomi.Invoke(null,newobject[]{value.ToString(),concreteInstance})似乎成功但未设置输出参数concreteInstance到解析后的值交织到这个函数中,您
这个问题在这里已经有了答案:HowdoIusereflectiontocallagenericmethod?(8个答案)关闭8年前。在执行以下代码时,我收到此错误“无法对ContainsGenericParameters为真的类型或方法执行后期绑定(bind)操作。”classProgram{staticvoidMain(string[]args){MethodInfoMI=typeof(MyClass).GetMethod("TestProc");MI.MakeGenericMethod(new[]{typeof(string)});MI.Invoke(null,new[]{"Hel
如果我的服务正在启动或停止,我会使用此代码运行powershell脚本。Timertimer1=newTimer();ServiceControllersc=newServiceController("MyService");protectedoverridevoidOnStart(string[]args){timer1.Elapsed+=newElapsedEventHandler(OnElapsedTime);timer1.Interval=10000;timer1.Enabled=true;}privatevoidOnElapsedTime(objectsource,Elaps
我试图通过反射将项目添加到IList,但在调用“添加”方法时抛出错误“对象引用未设置”。在调试时我开始知道GetMethod("Add")正在返回NULL引用。TypeobjTyp=typeof(MyObject);//HardCodedTypeNamefordemopurposevarIListRef=typeof(List);Type[]IListParam={objTyp};objectResult=IListRef.MakeGenericType(IListParam);MyObjectobjTemp=newMyObject();Result.GetType().GetMeth
编辑这个问题的基本版本是,如果我有一些objecto,我将如何检查o是否属于实现IEnumerable的某种类型有反射(reflection)?最初的问题要具体得多,但对上述问题的回答也一样好。对不起,如果我在这个问题上给出了太多的细节结束编辑以下是一个设计的ValueInjecterPOC。除isCollectionMapping外一切正常方法在最底层。当且仅当源属性和目标属性都是实现IEnumerable的任何对象时,我试图让它返回true.我试过了IsAssignableFrom还有IsInstanceOfType,但似乎都不起作用。自从我取消注释方法的第二行以显式检查名称“Ch
如何获取静态构造函数的ConstructorInfo?publicclassMyClass{publicstaticintSomeValue;staticMyClass(){SomeValue=23;}}我尝试了以下但失败了......TypemyClass=typeof(MyClass);//throwsexceptionmyClass.TypeInitializer.Invoke(null);//returnsnull(alsotrieddeletingBindingFlags.PublicConstructorInfoci=myClass.GetConstructor(Bindi
有很多关于加速反射调用的帖子,这里有例子:SpeedingupReflectionAPIwithdelegatein.NET/C#https://codeblog.jonskeet.uk/2008/08/09/making-reflection-fly-and-exploring-delegates/这里:Example:SpeedingupReflectionAPIwithdelegatein.NET/C#我的问题是关于加速通用调用。这可能吗?我有一个抽象类和一个实现它的类...publicabstractclassEncasulatedMessageHandlerwhereT:Me
我浏览了reflection上的所有帖子但找不到我的问题的答案。在.NET反射之前,编程世界存在哪些问题它是如何解决这些问题的?请举例说明。 最佳答案 应该指出,.NET反射并不是革命性的——这些概念已经出现在其他框架中。.NET中的反射有两个方面:调查类型信息如果没有某种反射/内省(introspection)API,就很难执行序列化之类的操作。而不是在运行时提供它(通过检查属性/字段/等),您通常需要代码生成,即明确知道如何序列化每个类型的代码。如果您想连载没有双胞胎的东西,这既乏味又痛苦。同样,没有地方可以存储关于属性等的额外