草庐IT

Reflection

全部标签

C# "is"运算符 - 那是反射吗?

今天一位同事问了我一个有趣的问题-C#关键字/运算符“是否”被视为反射?objecttmp="astring";if(tmpisString){}这个操作符是如何在幕后实现的?是否需要反射(reflection)或反省?或者由于语言的强类型特性,对象的类型是否可以作为内存中对象的顶级属性立即访问?MSDN指出:Notethattheisoperatoronlyconsidersreferenceconversions,boxingconversions,andunboxingconversions.Otherconversions,suchasuser-definedconversio

C# "is"运算符 - 那是反射吗?

今天一位同事问了我一个有趣的问题-C#关键字/运算符“是否”被视为反射?objecttmp="astring";if(tmpisString){}这个操作符是如何在幕后实现的?是否需要反射(reflection)或反省?或者由于语言的强类型特性,对象的类型是否可以作为内存中对象的顶级属性立即访问?MSDN指出:Notethattheisoperatoronlyconsidersreferenceconversions,boxingconversions,andunboxingconversions.Otherconversions,suchasuser-definedconversio

c# - 使用 GetType() 进行转换

是否可以将对象转换为从GetType()返回的类型?我想要一个通用方法,它可以接受一个对象(对于匿名类型),然后返回一个转换为匿名类型的对象。我一直在考虑使用LCGDynamicMethod在容器类上构建一个方法,但我无法确切地弄清楚那会是什么样子。使用GetType()方法进行转换的想法是能够获取匿名类型并将对象转换为其实际类型,而无需实际知道类型。总体目标是将匿名类型的对象粘贴到容器中,然后我可以在方法之间共享和传递。 最佳答案 我想不出您为什么要强制转换为GetType(),因为如果不知道编译时的类型,您将无法对结果做任何有用

c# - 使用 GetType() 进行转换

是否可以将对象转换为从GetType()返回的类型?我想要一个通用方法,它可以接受一个对象(对于匿名类型),然后返回一个转换为匿名类型的对象。我一直在考虑使用LCGDynamicMethod在容器类上构建一个方法,但我无法确切地弄清楚那会是什么样子。使用GetType()方法进行转换的想法是能够获取匿名类型并将对象转换为其实际类型,而无需实际知道类型。总体目标是将匿名类型的对象粘贴到容器中,然后我可以在方法之间共享和传递。 最佳答案 我想不出您为什么要强制转换为GetType(),因为如果不知道编译时的类型,您将无法对结果做任何有用

c# - 反射(reflection):如何获得泛型方法?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:HowtousereflectiontocallgenericMethod?SelectRightGenericMethodwithReflection你好假设我在一个类中有以下两个方法:publicvoidMyMethod(objectval){}publicvoidMyMethod(Tval){}通过反射(reflection),我可以得到这样的第一个方法:Type[]typeArray=newType[1];typeArray.SetValue(typeof(object),1);varmyMetho

c# - 反射(reflection):如何获得泛型方法?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:HowtousereflectiontocallgenericMethod?SelectRightGenericMethodwithReflection你好假设我在一个类中有以下两个方法:publicvoidMyMethod(objectval){}publicvoidMyMethod(Tval){}通过反射(reflection),我可以得到这样的第一个方法:Type[]typeArray=newType[1];typeArray.SetValue(typeof(object),1);varmyMetho

c# - 检查 Type 或实例是否实现 IEnumerable 而不管类型 T

我正在对我当前的项目进行大量反射(reflection),我正在尝试提供一些辅助方法以保持一切整洁。我想提供一对方法来确定类型或实例是否实现了IEnumerable–无论类型T.这是我目前拥有的:publicstaticboolIsEnumerable(thisTypetype){return(typeisIEnumerable);}publicstaticboolIsEnumerable(thisobjectobj){return(objasIEnumerable!=null);}当我测试它们时使用Debug.WriteLine("TypeIEnumerable:"+typeof(I

c# - 检查 Type 或实例是否实现 IEnumerable 而不管类型 T

我正在对我当前的项目进行大量反射(reflection),我正在尝试提供一些辅助方法以保持一切整洁。我想提供一对方法来确定类型或实例是否实现了IEnumerable–无论类型T.这是我目前拥有的:publicstaticboolIsEnumerable(thisTypetype){return(typeisIEnumerable);}publicstaticboolIsEnumerable(thisobjectobj){return(objasIEnumerable!=null);}当我测试它们时使用Debug.WriteLine("TypeIEnumerable:"+typeof(I

c# - 反射.Net : how to load dependencies?

我尝试使用反射将插件系统添加到我的Windows.Net应用程序;但是当有依赖的插件时它会失败。插件类必须实现接口(interface)“IAddon”并具有一个空的构造函数。主程序使用反射加载插件:Assemblyassembly=Assembly.LoadFile(@"C:\Temp\TestAddon\Addon.dll");Typet=assembly.GetType("Test.MyAddon");ConstructorInfoctor=t.GetConstructor(newType[]{});IAddonaddon=(IAddon)ctor.Invoke(newobjec

c# - 反射.Net : how to load dependencies?

我尝试使用反射将插件系统添加到我的Windows.Net应用程序;但是当有依赖的插件时它会失败。插件类必须实现接口(interface)“IAddon”并具有一个空的构造函数。主程序使用反射加载插件:Assemblyassembly=Assembly.LoadFile(@"C:\Temp\TestAddon\Addon.dll");Typet=assembly.GetType("Test.MyAddon");ConstructorInfoctor=t.GetConstructor(newType[]{});IAddonaddon=(IAddon)ctor.Invoke(newobjec