Tag: reflection

在动态Linq Order By上保留NULL行

我正在使用下面的代码片段动态地订购我的Linq查询并且效果很好。 我在reflection或复杂的linq查询方面不是很出色但是我需要一种方法,当使用升序时,NULL值是最后的,反之亦然。 因此,如果我的属性名称是一个整数且列值为1,3,5,那么所有NULL行都将在结尾处,而不是默认情况下的开头。 我可以添加什么来表达这种情况? 此代码适用于entity framework,仍然需要进行NULL比较。 例 list.OrderBy(“NAME DESC”).ToList() 类 public static class OrderByHelper { public static IOrderedQueryable ThenBy(this IEnumerable enumerable, string orderBy) { return enumerable.AsQueryable().ThenBy(orderBy); } public static IOrderedQueryable ThenBy(this IQueryable collection, string orderBy) { if (string.IsNullOrWhiteSpace(orderBy)) orderBy = “ID DESC”; IOrderedQueryable orderedQueryable = null; foreach (OrderByInfo orderByInfo in ParseOrderBy(orderBy, false)) orderedQueryable = ApplyOrderBy(collection, […]

如何使用Reflection将构造函数作为MethodInfo获取

构造函数如下所示: public NameAndValue(string name, string value) 我需要使用Reflection将其作为MethodInfo。 它尝试了以下,但它没有找到构造函数( GetMethod返回null )。 MethodInfo constructor = typeof(NameAndValue).GetMethod(“.ctor”, new[] { typeof(string), typeof(string) }); 我究竟做错了什么?

对于属性/方法/成员,是否有类似于C#的typeof?

类Type元数据可以通过多种方式获得。 其中两个是: var typeInfo = Type.GetType(“MyClass”) 和 var typeInfo = typeof(MyClass) 第二种方式的优点是编译器会捕获拼写错误,并且IDE可以理解我正在谈论的内容(允许重构等function而不会无声地破坏代码) 是否存在强烈引用元数据和reflection的成员/属性/方法的等效方法? 我可以更换: var propertyInfo = typeof(MyClass).GetProperty(“MyProperty”) 有类似的东西: var propertyInfo = property(MyClass.MyProperty)

如何从UWP(又名.NET Core)中的Type对象获取程序集

Type类在.NET Framework中具有Assembly属性。 但是,当您编写当然使用.NET Core的UWP时,此属性已消失。 只有AssemblyQualifiedName属性可用。 我怎样才能从这个名字进入大会? 请记住,.NET Core中没有很多常用类,因此您通常的.NET Framework答案可能无效。 例如,没有AppDomain等等。

如何使用CSharpCodeProvider定位.net 4.5?

可能重复: 使用带有.net 4.5 beta的CSharpCodeProvider 对于.net 3.5我将v3.5传递给CSharpCodeProvider,当我在v4.5应用程序中将v4.5传递给CSharpCodeProvider时,我得到InvalidOperationException “无法找到编译器可执行文件csc.exe”。 任何人都知道这里发生了什么,我做错了什么? 代码重现。 。 。 using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Collections.Generic; namespace Console1 { class Program { static void Main(string[] args) { var options = new Dictionary{{“CompilerVersion”, “v4.5”}}; var cs = new CSharpCodeProvider(options); var compilerParams = new CompilerParameters(); var r = cs.CompileAssemblyFromSource(compilerParams , “namespace ns { class […]

如何使用.NET Reflection查找类的所有直接子类

考虑以下类层次结构:基类A,inheritance自A的类B和C以及inheritance自B的类D. public class A {…} public class B : A {…} public class C : A {…} public class D : B {…} 我可以使用以下代码来查找A的所有子类,包括D: var baseType = typeof(A); var assembly = typeof(A).Assembly; var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType)); 但是我只需要找到A的直接子类(例子中的B和C)并排除所有不直接从Ainheritance的类(例如D)。 知道怎么做吗?

我可以在C#中更改常量值吗?

我需要这个无法重新编译的.NET dll的hack。 一些黑客例如使用reflection等。

如何在C#中使用System.Reflection.MethodBase找到方法的返回类型?

如何从MethodBase中找出方法的返回类型? 我正在使用PostSharp并尝试覆盖CompileTimeValidate(MethodBase方法)方法以确保该属性应用于具有正确签名的方法。 谢谢,

Assembly.GetTypes()抛出exception

程序集GetTypes()在幕后做什么? 假设已经将一个程序集加载到AppDomain ,它还需要从物理DLL中读取吗? 汇编清单的作用是什么? 通过这样的程序集迭代: AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()) 我偶尔会收到以下错误: Could not load file or assembly 这告诉我,因为程序集被加载到AppDomain它不一定完全加载到内存中。 有时它仍然需要返回文件。 我的问题: 它为什么这样做? 如何检测这些半负载组件?

使用reflection在异步方法中获取方法名称不会返回预期结果

以下是我编写的一小段代码,用于演示此问题的基础知识。 码 private async void Form1_Load( object sender, EventArgs e ) { var result = await TestAsyncMethodName(); } private async Task TestAsyncMethodName() { string name = “Method: ” + System.Reflection.MethodBase.GetCurrentMethod().Name; int x = 0; foreach ( StackFrame sf in (new StackTrace()).GetFrames()) { x++; name = name + “\nStack Frame [” + x + “] : […]