草庐IT

反射面

全部标签

c# - 为什么这个对象的类型通过反射显示没有接口(interface),尽管至少实现了两个?

首先,一个按预期工作的示例:(所有代码都在VS2008即时窗口中执行)25isIComparable>>true25.GetType().GetInterfaces()>>{System.Type[5]}>>[0]:{Name="IComparable"FullName=...>>[1]:{Name="IFormattable"FullName=...>>...到目前为止一切顺利。现在让我们尝试一个通过基类型继承接口(interface)的对象:classTestBase:IComparable{publicintCompareTo(objectobj){thrownewNotImpl

c# - 使用反射在 C# 中设置索引属性的值

我有一个类有一个ObservableCollection作为属性,我正在尝试更改该类实例的该属性内的值。这是我的代码,它会引发TargetException:object[]index=null;varoriginalPropertyName=propertyName;if(propertyName.Contains("[")&&propertyName.Contains("]")){index=newobject[1];index[0]=Convert.ToInt32(propertyName.Split('[')[1].Split(']')[0]);propertyName=pro

c# - c# 中的匿名类型是否可以通过反射访问?

由于匿名类型的名称是编译器生成的,因此可以通过反射访问吗? 最佳答案 是的。就CLR/框架而言,它们是普通类型。事实上,你可以做一些interestingthings对匿名类型的反射(reflection)...虽然当前的C#编译器实际上创建了一个泛型类型,因此两个仅具有不同类型的“Foo”属性的匿名类型将共享一个泛型类型,但具有不同的封闭类型。 关于c#-c#中的匿名类型是否可以通过反射访问?,我们在StackOverflow上找到一个类似的问题: http

c# - 使用反射从原始类型确定复杂类型

我正在编写一个工具,我需要在其中反射(reflect)方法,如果方法的参数是复杂类型,那么我需要某些类型的操作,例如实例化它们等。现在我在Type变量中看到了IsPrimitive属性。但是,它将string和decimal显示为复杂类型,这在技术上是正确的。然而,我真正想要的是能够区分开发人员创建的类类型和系统定义的数据类型。有什么办法可以做到这一点吗? 最佳答案 decimal肯定是“复杂类型”;C#可能有一个关键字,但它不是CLI原语。String你可以用任何一种方式争论-它实际上是一个完全独立的类型(不确定大小等-唯一可以远

c# - 如何通过反射判断字段是否有 'new'修饰符?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:HowdoIdetectthe"new"modiferonafieldusingreflection?有如下声明publicclassB:A{publicnewstringName;}我如何确定该字段的FieldInfo实例是否具有"new"修饰符?

C# 反射按名称获取字段或属性

有没有办法为函数提供名称,然后返回具有该名称的给定对象的字段或属性的值?我尝试使用null-coalesce运算符解决它,但显然它不喜欢不同的类型(这对我来说也有点奇怪,因为null是null)。我可以将它分离到ifnulls中,但必须有更好的方法来做到这一点。这是我的函数,带有Comparison对象的两行无法编译,但我会把它们留在那里以展示我正在尝试做什么。privatevoidSortByMemberName(Listlist,stringmemberName,boolascending){Typetype=typeof(T);MemberInfoinfo=type.GetFie

c# - 当 T 未知时,如何使用反射执行 List<object>.Cast<T>

我已经尝试了好几个小时了,这就是我所能做到的了varcastItems=typeof(Enumerable).GetMethod("Cast").MakeGenericMethod(newType[]{targetType}).Invoke(null,newobject[]{items});这让我回来了System.Linq.Enumerable+d__aa`1[MyObjectType]而我需要(对于我的ViewData)作为通用列表,即System.Collections.Generic.List`1[MyObjectType]任何指针都会很棒 最佳答案

c# - 如何用反射读取方法体

是否有可能找到有关带反射的方法体的任何信息?如何? 最佳答案 您可以使用MethodInfo.GetMethodBody.这让您可以访问任何您想要的东西...如果您乐于自己完成IL等。有可能MonoCecillibrary会提供更多帮助——我自己没用过。 关于c#-如何用反射读取方法体,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4986563/

c# - 如何使用反射调用通用扩展方法?

我写了扩展方法GenericExtension。现在我想调用扩展方法Extension。但是methodInfo的值始终为null。publicstaticclassMyClass{publicstaticvoidGenericExtension(thisForma,stringb)whereT:Form{//code...}publicstaticvoidExtension(thisForma,stringb,Typec){MethodInfomethodInfo=typeof(Form).GetMethod("GenericExtension",new[]{typeof(strin

c# - 遍历索引属性(反射)

我想迭代一个我只能通过反射访问的索引属性,但是(我在充分了解可能有一个令人尴尬的简单答案的情况下说这个,MSDN/Google失败=/)除了在PropertyInfo.GetValue(prop,counter)直到抛出TargetInvocationException。阿拉:foreach(PropertyInfopropinobj.GetType().GetProperties()){if(prop.GetIndexParameters().Length>0){//getanintegercountvalue,byincrementingacounteruntiltheexcept