Tag: reflection

从属性名称的字符串创建表达式?

我正在尝试基于一些JSON创建查询,我目前将JSON解析为一组规则,每个规则包含字段的名称,比较的类型(=,> etc)和要比较的值。 我遇到的问题是从规则到IQueryable对象,我猜我需要使用reflection并以某种方式构建表达式树,但我不确定正确的方法…… 假设我有: public class Order : BaseEntity { public int OrderID{ get; set; } } 而我的规则是: public class Rule { public string field { get; set; } public Operations op { get; set; } public string data { get; set; } } 运行它我得到: field = “OrderID” op = “eq” data = “123” 我有方法用签名解析它: […]

使用类名和方法名调用类的成员

我试图使用Reflection调用类的函数(假设对象初始化不依赖于要调用的函数),就像这样 /// /// Calls a static public method. /// Assumes that the method returns a string /// /// name of the assembly containing the class in which the method lives. /// namespace of the class. /// name of the class in which the method lives. /// name of the method itself. /// parameter passed to […]

如何获取实现给定接口的所有已加载类型的所有实例?

我们需要获得实现给定接口的所有对象实例 – 我们可以这样做,如果是这样,如何?

Postsharp:它是如何工作的?

根据我的另一个问题的建议,我转换了引用的代码用于PostSharp: 属性: [Serializable] public sealed class InitAttribute : OnMethodBoundaryAspect { public override void OnEntry(MethodExecutionEventArgs eventArgs) { Console.Write(“Works!”); } } static class Logger { public static string _severity; public static void Init(string severity) { _severity = severity; } [Init()] public static void p() { Console.WriteLine(_severity); } } 尽管如此,我无法获得任何结果(控制台上的“Works!”)。 PostSharp属性中的断点显示永远不会输入。 任何帮助? 提前致谢。

从罗斯林的符号中获取类型

对于不同类型的符号,从Microsoft.CodeAnalysis.ISymbol获取System.Type的最佳通用方法是什么? (例如类声明,变量,属性等) 我希望能够对类型进行各种检查,例如检查类型是否实现任何接口,或者是否可以转换为任何接口,就像可以检查System.Type一样。 我遇到的问题是,用于表示符号的大多数具体类都是内部的(请参阅http://source.roslyn.io/ ),我在ISymbol中找不到tye类型信息。 SourceNamedTypeSymbol LocalSymbol 我使用以下代码检索ISymbol var objectSymbol = (ISymbol)model.GetDeclaredSymbol(obj.Node);

获取通用对象参数的实际类型

毫无疑问,这个问题的元素之前已被问过,但我找不到答案。 (免责声明:这是相关的,但与我最近提出的问题不同)。 我有这样的方法: public static void Method(MethodInfo m, T value) { Type memberType = m.GetValueType(); if (memberType.IsAssignableFrom(typeof(List)) { object memberValue = Activator.CreateInstance(memberType); ((List)memberValue).Add(value); } } 当我这样称它时,这工作正常: string s = “blah”; Method(memberInfo, s); 但是,我需要使用generics类型调用此方法,所以我这样调用它: Type valueType = someType; object passValue = someMethod.MakeGenericMethod(new Type[] { valueType }).Invoke(this, new object[] { }); /* Call my original method */ […]

使用reflection获取类型

我正在尝试使用reflection获取我的类的属性类型,但它返回我唯一的RuntimePropertyInfo – 作为类型的名称。 我有对象MyObject actualData – 它包含属性 – “name”作为字符串,“Item”作为我的类型DatumType 当我调试时,我可以看到,actualData有2个属性,第一个是字符串类型,第二个是DatumType,但是当我使用它时: string typeName = actualData.getType().getProperty(“Item”).getType().Name – 它返回RuntimePropertyInfo,而不是DatumType 你能看出我做错了什么吗? 我正在使用C# – .Net 4.0。 非常感谢!

C#。 使用reflection设置成员对象值

我需要您的帮助,以下代码。 基本上我有一个名为“Job”的类,它有一些公共字段。 我传递给我的方法“ApplyFilter”两个参数“job_in”和“job_filters”。 第一个参数包含实际数据,第二个参数包含指令(如果有)。 我需要遍历“job_in”对象,读取它的数据,通过读取“job_filters”来应用任何指令,修改数据(如果需要)并将其返回到新的“job_out”对象中。 一切正常,直到我需要将我的数据存储在“job_out”对象中: public class Job { public string job_id = “”; public string description = “”; public string address = “”; public string details = “”; } … private Job ApplyFilters(Job job_in, Job job_filters) { Type type = typeof(Job); Job job_out = new Job(); FieldInfo[] fields = type.GetFields(); // iterate through […]

使用reflection调用包含通用参数的静态方法

执行以下代码时,我收到此错误“无法对ContainsGenericParameters为true的类型或方法执行后期绑定操作。” class Program { static void Main(string[] args) { MethodInfo MI = typeof(MyClass).GetMethod(“TestProc”); MI.MakeGenericMethod(new [] {typeof(string)}); MI.Invoke(null, new [] {“Hello”}); } } class MyClass { public static void TestProc(T prefix) { Console.WriteLine(“Hello”); } } 上面的代码只是我面临的实际问题的缩放版本。 请帮忙。

动态创建基类的类型和调用构造函数

我需要动态创建一个类。 大多数工作正常,但我坚持生成构造函数。 AssemblyBuilder _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(“MyBuilder”), AssemblyBuilderAccess.Run); ModuleBuilder _moduleBuilder = _assemblyBuilder.DefineDynamicModule(“MyModule”); public static object GetInstance(this TSource source, string eventName) where TSource : class { var typeName = “MyTypeName”; var typeBuilder = _moduleBuilder.DefineType(typeName, TypeAttributes.Class | TypeAttributes.Public); // create type like class MyClass : GenericType var baseNotGenericType = typeof(GenericType); var baseType = baseNotGenericType.MakeGenericType(typeBuilder, typeof(TSource), typeof(TEventArgs)); typeBuilder.SetParent(baseType); […]