草庐IT

反射率

全部标签

c# - 如何通过反射获取当前属性名称?

当我在其中时,我想通过反射获取属性名称。可能吗?我有这样的代码:publicCarTypeCar{get{return(Wheel)this["Wheel"];}set{this["Wheel"]=value;}}因为我需要更多这样的属性,所以我想做这样的事情:publicCarTypeCar{get{return(Wheel)this[GetThisPropertyName()];}set{this[GetThisPropertyName()]=value;}} 最佳答案 由于属性实际上只是方法,您可以执行此操作并清理返回的get

c# - 如何通过反射获取当前属性名称?

当我在其中时,我想通过反射获取属性名称。可能吗?我有这样的代码:publicCarTypeCar{get{return(Wheel)this["Wheel"];}set{this["Wheel"]=value;}}因为我需要更多这样的属性,所以我想做这样的事情:publicCarTypeCar{get{return(Wheel)this[GetThisPropertyName()];}set{this[GetThisPropertyName()]=value;}} 最佳答案 由于属性实际上只是方法,您可以执行此操作并清理返回的get

c# - 我可以使用反射来检查方法中的代码吗?

我正在使用C#反射API。我可以轻松地在程序集中加载类、方法等的Type信息,但是,现在我想知道如何加载和读取方法中的代码? 最佳答案 基本答案:你不能使用反射API(System.Reflection)。原因是反射api旨在处理元数据(类的类型、方法的名称和签名……),而不是数据级别(即IL流本身)。扩展答案:您可以使用System.Reflection.Emit(例如ILGenerator类)发出(但不能读取)IL。通过MethodInfo.GetMethodBody(),您可以获得用于实现方法的二进制IL流。但这本身通常是完全

c# - 我可以使用反射来检查方法中的代码吗?

我正在使用C#反射API。我可以轻松地在程序集中加载类、方法等的Type信息,但是,现在我想知道如何加载和读取方法中的代码? 最佳答案 基本答案:你不能使用反射API(System.Reflection)。原因是反射api旨在处理元数据(类的类型、方法的名称和签名……),而不是数据级别(即IL流本身)。扩展答案:您可以使用System.Reflection.Emit(例如ILGenerator类)发出(但不能读取)IL。通过MethodInfo.GetMethodBody(),您可以获得用于实现方法的二进制IL流。但这本身通常是完全

c# - 如何使用反射获取属性值

我有以下代码:FieldInfo[]fieldInfos;fieldInfos=GetType().GetFields(BindingFlags.NonPublic|BindingFlags.Instance);我想做的是在运行时使用反射获取当前实例化实例的我的属性之一的值。我该怎么做? 最佳答案 像这样的东西应该可以工作:varvalue=(string)GetType().GetProperty("SomeProperty").GetValue(this,null); 关于c#-如何

c# - 如何使用反射获取属性值

我有以下代码:FieldInfo[]fieldInfos;fieldInfos=GetType().GetFields(BindingFlags.NonPublic|BindingFlags.Instance);我想做的是在运行时使用反射获取当前实例化实例的我的属性之一的值。我该怎么做? 最佳答案 像这样的东西应该可以工作:varvalue=(string)GetType().GetProperty("SomeProperty").GetValue(this,null); 关于c#-如何

c# - 使用反射,我如何检测具有 setter 的属性?

我有这段代码来遍历一个对象并通过反射获取它的所有属性:foreach(varpropertyInfointypeof(TBase).GetProperties(BindingFlags.Public|BindingFlags.Instance)){varoldValue=propertyInfo.GetValue(oldVersion,null);}我如何进行检查以仅查看具有“Set”的属性?(我想忽略只读值-只是“获取”。) 最佳答案 PropertyInfo.CanWrite(documentation)或PropertyInf

c# - 使用反射,我如何检测具有 setter 的属性?

我有这段代码来遍历一个对象并通过反射获取它的所有属性:foreach(varpropertyInfointypeof(TBase).GetProperties(BindingFlags.Public|BindingFlags.Instance)){varoldValue=propertyInfo.GetValue(oldVersion,null);}我如何进行检查以仅查看具有“Set”的属性?(我想忽略只读值-只是“获取”。) 最佳答案 PropertyInfo.CanWrite(documentation)或PropertyInf

c# - 缓存反射数据

缓存从反射中获取的昂贵数据的最佳方法是什么?例如,大多数快速序列化程序都会缓存此类信息,因此它们无需在每次再次遇到相同类型时都进行反射(reflect)。他们甚至可能生成一个他们从类型中查找的动态方法。.net4之前传统上,我为此使用普通的静态字典。例如:privatestaticConcurrentDictionary>cache;publicstaticDoSomething(objecto){Actionaction;if(cache.TryGetValue(o.GetType(),outaction))//Simplelookup,fast!{action(o);}else{/

c# - 缓存反射数据

缓存从反射中获取的昂贵数据的最佳方法是什么?例如,大多数快速序列化程序都会缓存此类信息,因此它们无需在每次再次遇到相同类型时都进行反射(reflect)。他们甚至可能生成一个他们从类型中查找的动态方法。.net4之前传统上,我为此使用普通的静态字典。例如:privatestaticConcurrentDictionary>cache;publicstaticDoSomething(objecto){Actionaction;if(cache.TryGetValue(o.GetType(),outaction))//Simplelookup,fast!{action(o);}else{/