由于匿名类型的名称是编译器生成的,因此可以通过反射访问吗? 最佳答案 是的。就CLR/框架而言,它们是普通类型。事实上,你可以做一些interestingthings对匿名类型的反射(reflection)...虽然当前的C#编译器实际上创建了一个泛型类型,因此两个仅具有不同类型的“Foo”属性的匿名类型将共享一个泛型类型,但具有不同的封闭类型。 关于c#-c#中的匿名类型是否可以通过反射访问?,我们在StackOverflow上找到一个类似的问题: http
我正在编写一个工具,我需要在其中反射(reflect)方法,如果方法的参数是复杂类型,那么我需要某些类型的操作,例如实例化它们等。现在我在Type变量中看到了IsPrimitive属性。但是,它将string和decimal显示为复杂类型,这在技术上是正确的。然而,我真正想要的是能够区分开发人员创建的类类型和系统定义的数据类型。有什么办法可以做到这一点吗? 最佳答案 decimal肯定是“复杂类型”;C#可能有一个关键字,但它不是CLI原语。String你可以用任何一种方式争论-它实际上是一个完全独立的类型(不确定大小等-唯一可以远
这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:DetectifamethodwasoverriddenusingReflection(C#)有没有办法判断一个方法是否被覆盖?例如publicclassFoo{publicvirtualvoidDoSomething(){}publicvirtualintGimmeIntPleez(){return0;}}publicclassBabyFoo:Foo{publicoverrideintGimmeIntPleez(){return-1;}}是否可以反射(reflect)BabyFoo并判断GimmeIntPl
这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:HowdoIdetectthe"new"modiferonafieldusingreflection?有如下声明publicclassB:A{publicnewstringName;}我如何确定该字段的FieldInfo实例是否具有"new"修饰符?
我正在尝试将字符串解析回MyEnum类型的可为null的属性。publicMyEnum?MyEnumProperty{get;set;}我在线上遇到错误:Enumresult=Enum.Parse(t,"One")asEnum;//TypeprovidedmustbeanEnum.Parametername:enumType我在下面有一个示例控制台测试。如果我删除属性MyEntity.MyEnumProperty上的nullable,则代码有效。除了通过反射,我如何在不知道typeOf枚举的情况下让代码工作?staticvoidMain(string[]args){MyEntitye=
我正在尝试编写一种方法来查找具有特定自定义属性的程序集中的所有类型。我还需要能够提供一个字符串值来匹配。需要注意的是,我希望能够在任何类上运行它并返回任何值。例如:我想执行这样的调用TypetTest=TypeFinder.GetTypesWithAttributeValue(Assembly.Load("MyAssembly"),typeof(DiagnosticTestAttribute),"TestName","EmailTest");目前我的方法是这样的:publicstaticTypeGetTypesWithAttributeValue(AssemblyaAssembly,T
如何纠正我遇到的这个错误TargetParameterCountExceptionwasunhandledbyusercode.Parametercountmismatch.这是我的代码发生的地方publicstaticvoidInvokeMethod(stringclassName,stringmethodName,stringfileName){vart=Type.GetType(className);using(StreamReaderf=newStreamReader("params.txt")){t.GetMethod(methodName).Invoke(t.GetCons
有没有办法为函数提供名称,然后返回具有该名称的给定对象的字段或属性的值?我尝试使用null-coalesce运算符解决它,但显然它不喜欢不同的类型(这对我来说也有点奇怪,因为null是null)。我可以将它分离到ifnulls中,但必须有更好的方法来做到这一点。这是我的函数,带有Comparison对象的两行无法编译,但我会把它们留在那里以展示我正在尝试做什么。privatevoidSortByMemberName(Listlist,stringmemberName,boolascending){Typetype=typeof(T);MemberInfoinfo=type.GetFie
我正在研究一种使用反射来检查方法的参数类型的方法。此方法遍历ParameterInfo并使用这些参数的类型执行某些操作。我一直假设如果TypeInfo.IsClass为true,则此类型是一个类并且始终(间接)派生自类型object(当然,当类型是object本身时除外)。因此,如果TypeInfo.IsClass为真,则必须设置TypeInfo.BaseType。好吧,我的假设是错误的!有些类不是从object类型派生的。我的假设搞砸了我的代码。例如:Typetype=typeof(int).MakeByRefType();type.IsClass将为true并且type.Bas
假设我有一个名为Foo的类。我无法更改Foo类,但我不想使用string类型的名为Bar的属性来扩展它。此外,我还有很多类,例如Foo,所以我对“通用”解决方案很感兴趣。我正在研究ExpandoObject,dynamic,它给了我想要的结果,但我想知道它可以在不使用的情况下完成动态...staticvoidMain(string[]args){varfoo=newFoo(){Thing="this"};varfooplus=Merge(foo,new{Bar="andthat"});Console.Write(string.Concat(fooplus.Thing,fooplus.B