Tag: reflection

如何使用reflection获取调用方法名称和types?

可能重复: 我怎样才能find调用当前方法的方法? 我想写一个方法获取调用方法的名称,以及包含调用方法的类的名称。 用C#reflection可能吗?

一行Python代码能够知道它的缩进嵌套级别吗?

从这样的事情: print(get_indentation_level()) print(get_indentation_level()) print(get_indentation_level()) 我想得到这样的东西: 1 2 3 代码能以这种方式读取它自己吗? 我想要的是从更多的嵌套部分的代码更多的嵌套输出。 以同样的方式,这使得代码更容易阅读,这将使输出更容易阅读。 当然,我可以手动实现,例如.format() ,但是我想到的是一个自定义的打印函数,它将print(i*' ' + string) ,其中i是缩进级别。 这将是在我的terminal上进行可读输出的快速方法。 有没有更好的方法来避免艰苦的手动格式?

反思:如何用参数调用方法

我想通过参数reflection调用一个方法,我得到: 对象与目标types不匹配 如果我调用没有参数的方法,它工作正常。 如果我调用Test("TestNoParameters")方法,基于下面的代码,它工作正常。 但是,如果我打电话Test("Run") ,我得到一个例外。 我的代码有问题吗? 我最初的目的是传递一个对象数组,如public void Run(object[] options)但这不起作用,我尝试了一些简单的,如string没有成功。 // Assembly1.dll namespace TestAssembly { public class Main { public void Run(string parameters) { // Do something… } public void TestNoParameters() { // Do something… } } } // Executing Assembly.exe public class TestReflection { public void Test(string methodName) { Assembly assembly = Assembly.LoadFile("…Assembly1.dll"); […]

Java数组reflection:isArray与instanceof

使用以下方法之间是否存在偏好或行为差异? if(obj.getClass().isArray()) {} 和 if(obj instanceof Object[]) {} ?

如何检查一个variables是否是一个类?

我想知道如何检查variables是否是一个类(不是一个实例!)或不。 我已经尝试使用函数isinstance(object, class_or_type_or_tuple)来做到这一点,但我不知道类会有什么types。 例如,在下面的代码中 class Foo: pass isinstance(Foo, **???**) # i want to make this return True. 我尝试用“ ??? ”replace??? ,但我意识到, class是python中的关键字。

如何获得具有给定属性的属性列表?

我有一个types, t ,我想获得具有MyAttribute属性的公共属性的列表。 该属性标记为AllowMultiple = false ,如下所示: [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] 目前我所拥有的是这个,但是我认为还有更好的办法: foreach (PropertyInfo prop in t.GetProperties()) { object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true); if (attributes.Length == 1) { //Property with my custom attribute } } 我怎样才能改善这个? 我很抱歉,如果这是重复的,那里有很多reflection线程…似乎这是一个相当热门的话题。

为什么Attributes.IsDefined()缺less重载?

受到SO问题的启发。 Attribute类有几个重载的IsDefined()方法。 所涵盖的属性应用于Assembly,Module,MemberInfo,ParameterInfo。 MemberInfo重载包括PropertyInfo,FieldInfo,EventInfo,MethodInfo,ConstructorInfo。 这照顾了大部分的AttributeTargets。 除了一个biggy:Attribute.IsDefined(Type,Type)没有重载,所以你可以检查一个属性是否定义在一个类上。 或者是一个结构,委托或枚举。 不是这是一个真正的问题,Type.GetCustomAttributes()可以解决这个问题。 但所有的BlahInfotypes也有这个。 我想知道缺乏对称性。 我不能指责为什么这将是types的问题。 猜测inheritance问题并不能解释给我。 有ValueType的混合可能是领先的,仍然没有意义。 我不买“他们忘了”,他们从来不这样做。 为什么这个超载缺失?

为什么会find一个types的初始化器抛出一个NullReferenceException?

这让我难住了。 我试图优化一些testingNoda时间,我们有一些types初始值检查。 我想我会找出一个types是否有一个types初始值设定项(静态构造函数或具有初始化的静态variables)加载到一个新的AppDomain 。 令我惊讶的是,尽pipe在我的代码中没有空值,但是对此的一个小testing却抛出了NullReferenceException 。 它仅在编译时没有debugging信息时抛出exception。 下面是一个简短但完整的程序来演示这个问题: using System; class Test { static Test() {} static void Main() { var cctor = typeof(Test).TypeInitializer; Console.WriteLine("Got initializer? {0}", cctor != null); } } 并编辑和输出的抄本: c:\Users\Jon\Test>csc Test.cs Microsoft (R) Visual C# Compiler version 4.0.30319.17626 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. […]

如何判断一个Javascript函数是否被定义

你如何判断JavaScript中的函数是否被定义? 我想要做这样的事情 function something_cool(text, callback) { alert(text); if( callback != null ) callback(); } 但它让我一个 callback不是一个函数 callback未定义时出错。

testing对象是否实现接口

如果一个对象在C#中实现给定的接口,最简单的方法是什么? ( 在Java中回答这个问题)