Questions tagged «reflection»

反射是程序在运行时观察和/或修改其结构和/或行为的能力。反射取决于支持的编程语言-请在使用此标记时标记正在使用的编程语言。

6
GetProperties()返回接口继承层次结构的所有属性
假设以下假设继承层次结构: public interface IA { int ID { get; set; } } public interface IB : IA { string Name { get; set; } } 使用反射并进行以下调用: typeof(IB).GetProperties(BindingFlags.Public | BindingFlags.Instance) 只会产生interface的属性IB,即“ Name”。 如果我们要对以下代码进行类似的测试, public abstract class A { public int ID { get; set; } } public class B : A …
97 c#  .net  reflection 

8
Java中的字符串替换,类似于力度模板
StringJava中是否有任何替换机制,我可以在其中传递带有文本的对象,并在出现字符串时替换它。 例如,文本为: Hello ${user.name}, Welcome to ${site.name}. 我拥有的对象是"user"和"site"。我想${}用对象的等效值替换内部给定的字符串。这与我们替换速度模板中的对象相同。


3
接口{}的范围,它存储一个切片
给定您具有接受功能的场景t interface{}。如果确定t是切片,我如何range在该切片上? func main() { data := []string{"one","two","three"} test(data) moredata := []int{1,2,3} test(data) } func test(t interface{}) { switch reflect.TypeOf(t).Kind() { case reflect.Slice: // how do I iterate here? for _,value := range t { fmt.Println(value) } } } 前往游乐场示例:http://play.golang.org/p/DNldAlNShB




7
私有方法真的安全吗?
在Java中,private访问修饰符被认为是安全的,因为它在类外部不可见。然后外面的世界也不知道这种方法。 但是我认为Java反射可以用来打破这一规则。考虑以下情况: public class ProtectedPrivacy{ private String getInfo(){ return "confidential"; } } 现在从另一堂课我将获得信息: public class BreakPrivacy{ public static void main(String[] args) throws Exception { ProtectedPrivacy protectedPrivacy = new ProtectedPrivacy(); Method method = protectedPrivacy.getClass().getDeclaredMethod("getInfo", null); method.setAccessible(true); Object result = method.invoke(protectedPrivacy); System.out.println(result.toString()); } } 这时我只是觉得私有方法仍然安全,因为要做上面的事情我们必须知道方法名称。但是,如果类包含由其他人编写的私有方法,那么我们将看不到那些。 但是,由于下面的代码行,我的观点变得无效。 Method method[] = new ProtectedPrivacy().getClass().getDeclaredMethods(); 现在,它method[]包含了需要做的所有事情。我的问题是,有没有一种方法可以避免使用Java反射做这种事情? …

16
如何动态评估C#代码?
我可以做一个eval("something()");在JavaScript中动态执行代码。有没有办法让我在C#中做同样的事情? 我要尝试执行的一个示例是:我有一个整数变量(例如i),并且具有多个具有以下名称的属性:“ Property1”,“ Property2”,“ Property3”等。现在,我想执行一些操作在“ Property i ”属性上取决于值i。 使用Javascript确实很简单。有什么办法用C#做到这一点?

23
如何将Java对象(bean)转换为键值对(反之亦然)?
说我有一个非常简单的java对象,它仅具有一些getXXX和setXXX属性。该对象仅用于处理值,基本上是记录或类型安全(和性能)映射。我经常需要将此对象转换为键值对(字符串或类型安全)或从键值对转换为该对象。 除了反射或手动编写代码来进行此转换之外,实现此目的的最佳方法是什么? 一个示例可能是通过jms发送此对象,而不使用ObjectMessage类型(或将传入消息转换为正确的对象)。


4
确定类是否在Java中实现接口
我有一个Class对象。我想确定Class对象表示的类型是否实现特定的接口。我想知道如何实现? 我有以下代码。基本上,它所做的是获取指定包中所有类的数组。然后,我想遍历数组并将实现接口的Class对象添加到我的地图。问题是isInstance()将对象作为参数。我无法实例化接口。所以我对此感到茫然。有任何想法吗? Class[] classes = ClassUtils.getClasses(handlersPackage); for(Class clazz : classes) { if(clazz.isInstance(/*Some object*/)) //Need something in this if statement { retVal.put(clazz.getSimpleName(), clazz); } }
91 java  reflection 

5
在C#中在运行时加载DLL
我试图弄清楚如何在C#应用程序内部在运行时导入和使用.dll。使用Assembly.LoadFile(),我设法使程序加载dll(这部分肯定可以正常工作,因为我能够使用ToString()获得类的名称),但是我无法使用“输出”控制台应用程序内部的方法。我正在编译.dll,然后将其移动到控制台项目中。在CreateInstance和能够使用这些方法之间是否还有其他步骤? 这是我的DLL中的类: namespace DLL { using System; public class Class1 { public void Output(string s) { Console.WriteLine(s); } } } 这是我要加载DLL的应用程序 namespace ConsoleApplication1 { using System; using System.Reflection; class Program { static void Main(string[] args) { var DLL = Assembly.LoadFile(@"C:\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\DLL.dll"); foreach(Type type in DLL.GetExportedTypes()) { var c = …
91 c#  reflection  dll 

10
将对象映射到字典,反之亦然
是否有任何优雅的快速方法将对象映射到字典,反之亦然? 例: IDictionary<string,object> a = new Dictionary<string,object>(); a["Id"]=1; a["Name"]="Ahmad"; // ..... 变成 SomeClass b = new SomeClass(); b.Id=1; b.Name="Ahmad"; // ..........

6
C#反思:如何从字符串获取类引用?
我想用C#做到这一点,但是我不知道怎么做: 我有一个带有类名-eg:的字符串,FooClass并且我想在该类上调用一个(静态)方法: FooClass.MyMethod(); 显然,我需要通过反射找到对该类的引用,但是如何呢?
89 c#  reflection 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.