Tag: reflection

首先反映动态类型以告知它是否是动态类型

有没有一种方法可以判断对象被分配的类型是动态类型? 例如: dynamic foo = GetCat(); Console.WriteLine( (foo is Cat).ToString() ); // will print True because // at the execution time, foo will have assumed the Cat type. However, is // there a mechanism by which I can reflect on foo and say, “This guy was assigned // a dynamic type, to begin with.”?

C#:如何通过存储在String中的名称获取对象?

是否可以在C#中按名称获取对象? 即使用。获取this.obj0 string objectName = “obj0”; executeSomeFunctionOnObject(this.someLoadObjectByName(objectName));

generics类型的C#声明

是否有可能得到一个reflection获得的类型的“c#名称”,如: System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 我想得到: List 没有拆分字符串有可能吗? 例如,使用Reflection。 谢谢!

使用Reflection解析函数/方法内容

我的unit testing框架包括TestFixtures,TestMethods和Actions。 Action是TestMethod中的另一个小容器,Actions来自我们公司编写的内部Dll。 在这样的方法中使用动作: [Test] void TestMethod1() { Run(new Sleep { Seconds = 10 } ); } 我必须编写一个应用程序,它从DLL收集有关夹具,测试和操作的所有信息。 我已经找到了如何使用类型/方法属性通过reflection枚举测试夹具和测试方法。 但是我不知道如何在测试方法中枚举动作。 能否请你帮忙? 是否可以使用reflection? 更新:见接受的答案。 真的很酷的图书馆。 你也可以在这里看看( WPF:以MVVM方式逐步教程中的Binding TreeView ),如果你对如何为夹具,测试和操作创建实体模型以及以MVVM方式绑定到TreeView感兴趣。

通过其粗俗的名称获取属性值

请考虑这个课程: public static class Age { public static readonly string F1 = “18-25”; public static readonly string F2 = “26-35”; public static readonly string F3 = “36-45”; public static readonly string F4 = “46-55”; } 我想编写一个获得“F1”并返回“18-25”的函数。例如 private string GetValue(string PropertyName) …. 我该怎么做?

如何获取给出类名的类的实例?

我已经看过这个主题: 从类名创建一个实例 并编写此代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { object obj = Activator.CreateInstance(null, “MyClass”); MyClass t = (MyClass)obj; t.My1 = 100; MessageBox.Show(t.My1.ToString()); } } public class MyClass { public int My1 { get; set; } public int My2 { get; set; } […]

如何获取嵌套属性

我想检索一个PropertyInfo,这里代码: string propertyName=”Text”; PropertyInfo pi = control.GetType().GetProperty(propertyName); 它工作正常,但如果我想检索嵌套属性,它返回null: string propertyName=”DisplayLayout.Override.RowSelectors”; PropertyInfo pi = control.GetType().GetProperty(propertyName); 有没有办法获得嵌套属性? 最好的祝福, 弗洛里安 编辑:我现在有一个新问题,我想得到一个属性是一个数组: string propertyName=”DisplayLayout.Bands[0].Columns”; PropertyInfo pi = control.GetType().GetProperty(propertyName) 谢谢

通过reflection创建委托

给定一个包含的程序集 namespace Foo{public class Bar;} 如何在不编译时引用第一个程序集的情况下从另一个程序集创建Action ?

如何确定对象的类型是否实现IEnumerable ,其中X使用Reflection从Base派生

给一个基类Base ,我想编写一个方法Test,如下所示: private static bool Test(IEnumerable enumerable) { … } 如果o的类型实现IEnumerable任何接口,其中X派生自Base ,那么Test返回true,所以如果我这样做: public static IEnumerable Convert(IEnumerable enumerable) { if (Test(enumerable)) { return enumerable.Cast().Select(b => b.SomePropertyThatIsString); } return enumerable.Cast().Select(o => o.ToString()); } ……使用Reflection可以做正确的事情。 我确定这是跨越所有类型接口的问题,找到符合要求的第一个,但我很难找到其中的通用IEnumerable 。 当然,我可以考虑这个: public static IEnumerable Convert(IEnumerable enumerable) { return enumerable.Cast().Select(o => o is Base ? ((Base)o).SomePropertyThatIsString : o.ToString()); } ……但是把它想象成一个思想实验。

测试对象是否为任何generics类型实现通用接口

我想测试一个对象,看它是否实现了IDictionary但我不关心TKey和TValue是什么。 我可以测试是否是框架Dictionary的具体实例Dictionary如下所示: bool isDict = type.IsGenericType && (typeof(Dictionary).IsAssignableFrom(type.GetGenericTypeDefinition()); 但我想不出一种方法来测试实现IDictionary东西。 这种技术不适用于界面; 如果我对通用基类型IDictionary测试,则IsAssignableFrom返回false,这看起来很奇怪,因为它适用于具体类型。 通常你会使用is来测试某些东西是否实现了一个接口,当然这只有在我想测试一个特定的通用接口时才有效。 或者我只测试一个共同的祖先接口,但与其他通用数据结构(如IList和ICollection ,没有唯一的非generics接口,genericsIDictionaryinheritance该接口。