Tag: reflection

如何使用reflection在构造函数中使用参数创build类的实例?

例如: public class Test { public static void main(String[] args) throws Exception { Car c= (Car) Class.forName("Car").newInstance(); System.out.println(c.getName()); } } class Car { String name = "Default Car"; String getName(){return this.name;} } 清除代码。 但是,如果我用params添加构造函数,有些像这样: public Car(String name) {this.name = name;} 我看到: java.lang.InstantiationException 所以,不,我不知道,如何通过params构造函数。 请帮忙。

使用reflection查找具有自定义属性的方法

我有一个自定义属性: public class MenuItemAttribute : Attribute { } 和一个有几个方法的类: public class HelloWorld { [MenuItemAttribute] public void Shout() { } [MenuItemAttribute] public void Cry() { } public void RunLikeHell() { } } 我怎样才能得到装饰自定义属性的方法? 到目前为止,我有这样的: string assemblyName = fileInfo.FullName; byte[] assemblyBytes = File.ReadAllBytes(assemblyName); Assembly assembly = Assembly.Load(assemblyBytes); foreach (Type type in assembly.GetTypes()) { System.Attribute[] attributes = System.Attribute.GetCustomAttributes(type); […]

如何通过reflection找出一个字段是否是一个types的实例?

我想通过reflection找出一个字段是否是Ttypes的一个实例。 可以说我有一个对象o 。 现在我想知道它是否有任何字段是T实例。 我可以得到所有的领域: o.getClass().getFields(); 我可以通过以下方式获取字段的types: field.getType(); 但是现在我想知道这个types或者超types是否等于T 我是否必须recursion调用getSuperclass()以确保检查所有超types?

使用reflection获得父类的名字

我怎样才能得到一些类的父类的名称使用reflection?

如何获得程序集的根名称空间?

给定一个System.Reflection.Assembly的实例。

我怎样才能调用一个out参数的方法?

我想要公开WebClient.DownloadDataInternal方法如下所示: [ComVisible(true)] public class MyWebClient : WebClient { private MethodInfo _DownloadDataInternal; public MyWebClient() { _DownloadDataInternal = typeof(WebClient).GetMethod("DownloadDataInternal", BindingFlags.NonPublic | BindingFlags.Instance); } public byte[] DownloadDataInternal(Uri address, out WebRequest request) { _DownloadDataInternal.Invoke(this, new object[] { address, out request }); } } WebClient.DownloadDataInternal有一个out参数,我不知道如何调用它。 帮帮我!

Class API中的getDeclaredConstructors和getConstructors有什么区别?

我注意到在Java Reflection API中有两种调用构造函数的方法: getDeclaredConstructors / getConstructors方法。 虽然Java文档略有不同( getDeclaredConstructors似乎暗示它返回的是所有构造函数,而不是公共函数),但不清楚API为什么明确支持这两种不同的方法。 更重要的是,我想知道:如果我们正在dynamic调用类,什么时候一种方法比另一种方法更可取? 例如,访问私有构造函数的目的是什么?

检查一个属性是否存在于一个类中

我尝试了解一个类是否存在一个属性,我试过这个: public static bool HasProperty(this object obj, string propertyName) { return obj.GetType().GetProperty(propertyName) != null; } 我不明白为什么第一个testing方法不通过? [TestMethod] public void Test_HasProperty_True() { var res = typeof(MyClass).HasProperty("Label"); Assert.IsTrue(res); } [TestMethod] public void Test_HasProperty_False() { var res = typeof(MyClass).HasProperty("Lab"); Assert.IsFalse(res); }

使用IsAssignableFrom和'open'genericstypes

使用reflection,我试图find从给定的基类inheritance的types的集合。 找出简单的types并不需要太长的时间,但是当涉及到非专利types的时候,我却难以理解了。 对于这段代码,第一个IsAssignableFrom返回true,但是第二个返回false。 然而,最后的任务编译得很好。 class class1 { } class class2 : class1 { } class generic1<T> { } class generic2<T> : generic1<T> { } class Program { static void Main(string[] args) { Type c1 = typeof(class1); Type c2 = typeof(class2); Console.WriteLine("c1.IsAssignableFrom(c2): {0}", c1.IsAssignableFrom(c2)); Type g1 = typeof(generic1<>); Type g2 = typeof(generic2<>); Console.WriteLine("g1.IsAssignableFrom(g2): {0}", g1.IsAssignableFrom(g2)); generic1<class1> […]

自定义属性对抽象属性的inheritance

我有一个自定义属性,我想要应用到我的基本抽象类,以便我可以跳过HTML中显示项目时用户不需要查看的元素。 看来覆盖基类的属性不会inheritance属性。 重写基本属性(抽象还是虚拟)会吹走放置在原始属性上的属性? 从属性类定义 [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)] public class NoHtmlOutput : Attribute { } 从抽象类定义 [NoHtmlOutput] public abstract Guid UniqueID { get; set; } 从具体类的定义看 public override Guid UniqueID{ get{ return MasterId;} set{MasterId = value;}} 从类检查属性 Type t = o.GetType(); foreach (PropertyInfo pi in t.GetProperties()) { if (pi.GetCustomAttributes(typeof(NoHtmlOutput), true).Length == 1) […]