Tag: reflection

使用reflection动态地将属性转换为其实际类型

我需要动态地将属性转换为其实际类型。 我如何/可以使用reflection来做到这一点? 解释我正在努力的真实场景。 我试图在Entity Framework属性上调用“First”扩展方法。 要在Framework上下文对象上调用的特定属性作为字符串传递给方法(以及要检索的记录的id)。 所以我需要对象的实际类型才能调用First方法。 我不能在对象上使用“Where”方法,因为lambda或delegate方法仍然需要对象的实际类型才能访问属性。 此外,当对象由entity framework生成时,我无法将类型转换为接口并对其进行操作。 这是场景代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Reflection; namespace NmSpc { public class ClassA { public int IntProperty { get; set; } } public class ClassB { public ClassA MyProperty { get; set; } } public class ClassC { static void Main(string[] […]

如何将表达式树编译成可调用的方法C#?

我有一个表达式树,我通过使用C#中的表达式类解析Xml来创建。 看到这个问题 。 我只在我的表达式树中添加,减去,除以,乘,参数和和。 有没有办法将此ExpressionTree转换为可调用方法? …还是我必须手动发射IL? 亲切的问候,

C#reflection和获取属性

我有以下虚拟类结构,我试图找出如何从PeopleList中的类People的每个实例获取属性。 我知道如何从People的单个实例中获取属性但是在我的生活中无法知道如何从PeopleList获取它。 我确信这真的很简单,但是有人能指出我正确的方向吗? public class Example { public class People { private string _name; public string Name { get { return _name; } set { _name = value; } } private int _age; public int Age { get { return _age; } set { _age = value; } } public People() { } public People(string […]

使用GetProperty获取子属性的最佳方法

public class Address { public string ZipCode {get; set;} } public class Customer { public Address Address {get; set;} } 如何通过reflection访问“ZipCode”或“Address.ZipCode”? 例如: Typeof(Customer).GetProperty(“ZipCode”)?

代表行动

我正在尝试创建一个带有ref参数的静态方法的委托。 请不要问我为什么要做这样的蠢货。 这是学习.Net,C#和reflection工作以及如何优化它的全部内容。 我的代码是: public struct DataRow { private double t; static public void Cram_T(ref DataRow dr, double a_t) { dr.t = a_t; } } ”” Type myType = typeof(DataRow); MethodInfo my_Cram_T_Method = myType.GetMethod(“Cram_T”); var myCram_T_Delegate = Delegate.CreateDelegate(typeof(Action), my_Cram_T_Method) as Action; 这给了我一个绑定错误,因为(我认为)generics操作与方法不匹配。 检查监视窗口中Cram_T_Method的值 {Void Cram_T(DataRow ByRef, Double)} 然后我尝试在Action中使用ref关键字: var myCram_T_Delegate = Delegate.CreateDelegate(typeof(Action), my_Cram_T_Method) as Action; […]

c#获取接口方法注释

说我有 interface IFoo { /// /// Comments about Bar method goes here. /// void Bar(); } 我正在使用reflection在运行时显示方法 MethodInfo[] mis = typeof(IFoo).GetMethods(); 但我想知道我是否可以获得方法中 包含的评论。 我意识到注释只是忽略了我的编译器,但有什么可以做的来检索注释吗? 现在我有一个单独的文件,有方法和评论,但我讨厌冗余,并想知道是否有任何方法可以做到这一点。 谢谢,

在静态类上调用方法,并将其类型名称和方法名称作为字符串

我怎么能在给定类名和方法名的静态类上调用方法呢? 例如: 给定System.Environment和GetFolderPath ,我想使用Reflection来调用Environment.GetFolderPath() 。

如何在.NET中动态调用类的方法?

如何将类和方法名称作为字符串传递并调用该类的方法? 喜欢 void caller(string myclass, string mymethod){ // call myclass.mymethod(); } 谢谢

通过System.Reflection访问内部成员?

我正在尝试对具有许多内部函数的类进行unit testing。 这些显然也需要测试,但我的测试项目是独立的,主要是因为它涵盖了许多小的相关项目。 到目前为止我所拥有的是: FieldInfo[] _fields = typeof(ButtonedForm.TitleButton).GetFields( BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); Console.WriteLine(“{0} fields:”, _fields.Length); foreach (FieldInfo fi in _fields) { Console.WriteLine(fi.Name); } 这很好地吐出了所有的私人成员,但仍然没有显示内部。 我知道这是可能的,因为当我搞乱Visual Studio可以生成的自动生成的测试时,它询问了如何处理显示Test项目的内部结构。 好吧,现在我正在使用NUnit而且非常喜欢它,但是我怎么能用它来实现同样的目的呢?

.NET程序集插件安全性

我在许多应用程序中使用了以下代码来加载暴露插件的.DLL程序集。 但是,我之前总是关注function,而不是安全性。 我现在计划在Web应用程序上使用此方法,该应用程序可以由除我以外的组使用,我想确保该function的安全性是最好的。 private void LoadPlugins(string pluginsDirectory) { List factories = new List(); foreach (string path in Directory.GetFiles(pluginsDirectory, “*.dll”)) { Assembly assembly = Assembly.LoadFile(path); foreach (Type type in assembly.GetTypes()) { IPluginEnumerator instance = null; if (type.GetInterface(“IPluginEnumerator”) != null) instance = (IPluginEnumerator)Activator.CreateInstance(type); if (instance != null) { factories.AddRange(instance.EnumerateFactories()); } } } // Here, I would usually […]