草庐IT

Reflection

全部标签

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

我明白以前有人问过类似的问题,但我很难在下面的代码中调用LinqWhere方法。我希望使用反射来动态调用此方法,并动态构建Where子句中使用的委托(delegate)(或lambda)。这是一个简短的代码示例,一旦运行,将有助于构成我正在构建的解释型DSL的一部分。干杯。publicstaticvoidCallWhereMethod(){ListmyObjects=newList(){newMyObject{Name="JonSimpson"}};System.DelegateNameEquals=BuildEqFuncFor("Name","JonSimpson");object[

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

我明白以前有人问过类似的问题,但我很难在下面的代码中调用LinqWhere方法。我希望使用反射来动态调用此方法,并动态构建Where子句中使用的委托(delegate)(或lambda)。这是一个简短的代码示例,一旦运行,将有助于构成我正在构建的解释型DSL的一部分。干杯。publicstaticvoidCallWhereMethod(){ListmyObjects=newList(){newMyObject{Name="JonSimpson"}};System.DelegateNameEquals=BuildEqFuncFor("Name","JonSimpson");object[

c# - 给定一个类型实例,如何在 C# 中获取泛型类型名称?

给定一个泛型,包括ListNullable如何获得C#的通用名称?vart=typeof(Nullable);vars=t.GetGenericTypeDefinition().Name+"";这会产生"Nullable`1",但我需要"Nullable". 最佳答案 我看到您已经接受了一个答案,但老实说,如果您只是将其中的内容与您已经编写的内容结合起来,那么这个答案将不足以可靠地完成此操作。它走在正确的轨道上,但您的代码将只适用于只有一个泛型参数的泛型类型,并且只有当泛型类型参数本身不是泛型时它才会工作!这是一个在所有情况下都应该

c# - 给定一个类型实例,如何在 C# 中获取泛型类型名称?

给定一个泛型,包括ListNullable如何获得C#的通用名称?vart=typeof(Nullable);vars=t.GetGenericTypeDefinition().Name+"";这会产生"Nullable`1",但我需要"Nullable". 最佳答案 我看到您已经接受了一个答案,但老实说,如果您只是将其中的内容与您已经编写的内容结合起来,那么这个答案将不足以可靠地完成此操作。它走在正确的轨道上,但您的代码将只适用于只有一个泛型参数的泛型类型,并且只有当泛型类型参数本身不是泛型时它才会工作!这是一个在所有情况下都应该

c# - 什么时候使用反射?模式/反模式

我理解反射API(在c#中),但我不确定我会在什么情况下使用它。有哪些模式-使用反射的反模式? 最佳答案 在我正在开发的一个产品中,我们经常使用它,但反射是一种复杂、缓慢的野兽。不要仅仅因为它听起来有趣或有趣就去寻找使用它的地方。当您遇到无法以任何其他方式解决的问题时(为插件或框架动态加载程序集、程序集检查、在构建时不知道类型的工厂等),您将使用它。查看反射教程以了解它是如何工作的当然值得,但不要陷入“拿着锤子,一切看起来都像钉子”的陷阱。它有非常专业的用例。 关于c#-什么时候使用反射

c# - 什么时候使用反射?模式/反模式

我理解反射API(在c#中),但我不确定我会在什么情况下使用它。有哪些模式-使用反射的反模式? 最佳答案 在我正在开发的一个产品中,我们经常使用它,但反射是一种复杂、缓慢的野兽。不要仅仅因为它听起来有趣或有趣就去寻找使用它的地方。当您遇到无法以任何其他方式解决的问题时(为插件或框架动态加载程序集、程序集检查、在构建时不知道类型的工厂等),您将使用它。查看反射教程以了解它是如何工作的当然值得,但不要陷入“拿着锤子,一切看起来都像钉子”的陷阱。它有非常专业的用例。 关于c#-什么时候使用反射

c# - 引用参数和反射

我不确定我是否完全遗漏了这里的某些东西,但我找不到任何方法来确定参数是否通过引用传递或不通过使用反射传递。ArgumentInfo有一个属性“IsOut”,但没有“IsRef”。我将如何获取给定MethodInfo中的所有引用参数? 最佳答案 ParameterInfo[]parameters=myMethodInfo.GetParameters();foreach(ParameterInfoparameterinparameters){boolisRef=parameterInfo.ParameterType.IsByRef;}

c# - 引用参数和反射

我不确定我是否完全遗漏了这里的某些东西,但我找不到任何方法来确定参数是否通过引用传递或不通过使用反射传递。ArgumentInfo有一个属性“IsOut”,但没有“IsRef”。我将如何获取给定MethodInfo中的所有引用参数? 最佳答案 ParameterInfo[]parameters=myMethodInfo.GetParameters();foreach(ParameterInfoparameterinparameters){boolisRef=parameterInfo.ParameterType.IsByRef;}

c# - 如何获取 MemberInfo 的值?

如何获取MemberInfo对象的值?.Name返回变量的名称,但我需要值。我想你可以用FieldInfo做到这一点,但我没有代码片段,如果你知道如何做到这一点,你能提供一个代码片段吗??谢谢! 最佳答案 虽然我大体上同意Marc关于不反射(reflect)字段的观点,但有时也需要这样做。如果你想反射(reflect)一个成员并且你不关心它是一个字段还是一个属性,你可以使用这个扩展方法来获取值(如果你想要类型而不是值,请参见nawful对thisquestion的回答):publicstaticobjectGetValue(this

c# - 如何获取 MemberInfo 的值?

如何获取MemberInfo对象的值?.Name返回变量的名称,但我需要值。我想你可以用FieldInfo做到这一点,但我没有代码片段,如果你知道如何做到这一点,你能提供一个代码片段吗??谢谢! 最佳答案 虽然我大体上同意Marc关于不反射(reflect)字段的观点,但有时也需要这样做。如果你想反射(reflect)一个成员并且你不关心它是一个字段还是一个属性,你可以使用这个扩展方法来获取值(如果你想要类型而不是值,请参见nawful对thisquestion的回答):publicstaticobjectGetValue(this