标签: reflection

反射器的开源替代品?

只是想知道是否有人知道RedGate的Reflector的开源替代品?我很想知道一个类似于Reflector的工具是如何工作的.

请注意,如果您知道Reflector 的免费但开源替代方案,您可以回答以下相关问题:

摘要 - 2011年5月11日更新

快速汇总已建议的各种开源项目和工具:

  1. 通用编译器基础结构(CCI)
  2. 单声道塞西尔
  3. ILSpy
  4. dnSpy(ILSpy的分支,项目看起来比原来更活跃)
  5. Dotnet IL编辑器(DILE)
  6. IL.View
  7. Monoflector(截至2011年4月不再有效)

以下资源也可能是有意义的:

  • TypeView.cs
  • Jason Haley关于拆解.NET的说明
  • Adrian Bank最近的博客文章总结了许多Reflector的替代方案,包括下面没有提到的几个选项.
  • Mark Lichtenberg的详细博客文章将几个开源替代品(DILE,ILSpy和使用MonoDevelop的Mono Cecil)与Reflector进行了比较.

.net reflection reflector open-source

419
推荐指数
8
解决办法
12万
查看次数

Java字符串真的是不可变的吗?

我们都知道StringJava 中是不可变的,但请检查以下代码:

String s1 = "Hello World";  
String s2 = "Hello World";  
String s3 = s1.substring(6);  
System.out.println(s1); // Hello World  
System.out.println(s2); // Hello World  
System.out.println(s3); // World  

Field field = String.class.getDeclaredField("value");  
field.setAccessible(true);  
char[] value = (char[])field.get(s1);  
value[6] = 'J';  
value[7] = 'a';  
value[8] = 'v';  
value[9] = 'a';  
value[10] = '!';  

System.out.println(s1); // Hello Java!  
System.out.println(s2); // Hello Java!  
System.out.println(s3); // World  
Run Code Online (Sandbox Code Playgroud)

为什么这个程序运行这样?为什么价值s1s2变化,但不是s3

java string reflection immutability

391
推荐指数
11
解决办法
5万
查看次数

如何列出Python模块中的所有函数?

我在我的系统上安装了一个python模块,我希望能够看到它中有哪些函数/类/方法.

我想在每一个上调用doc函数.在ruby中,我可以执行类似ClassName.methods的操作,以获取该类上可用的所有方法的列表.python中有类似的东西吗?

例如.就像是:

from somemodule import foo
print foo.methods # or whatever is the correct method to call
Run Code Online (Sandbox Code Playgroud)

python reflection module inspect

376
推荐指数
13
解决办法
59万
查看次数

Go中的标签有什么用途?

Go语言规范中,它提到了标签的简要概述:

字段声明后面可以跟一个可选的字符串文字标记,该标记成为相应字段声明中所有字段的属性.标签通过反射界面可见,但否则将被忽略.

// A struct corresponding to the TimeStamp protocol buffer.
// The tag strings define the protocol buffer field numbers.
struct {
  microsec  uint64 "field 1"
  serverIP6 uint64 "field 2"
  process   string "field 3"
}
Run Code Online (Sandbox Code Playgroud)

这是一个非常简短的解释IMO,我想知道是否有人可以提供我这些标签的用途?

reflection struct go

364
推荐指数
3
解决办法
8万
查看次数

测试对象是否实现接口

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

c# reflection interface

342
推荐指数
6
解决办法
19万
查看次数

为什么C++没有反射?

这是一个有点离奇的问题.我的目标是理解语言设计决策并确定C++中反射的可能性.

  1. 为什么C++语言委员会不会在语言中实现反思?对于不在虚拟机上运行的语言(如java),反射是否太难?

  2. 如果要实现C++的反射,那么挑战是什么?

我想反射的使用是众所周知的:编辑器可以更容易编写,程序代码更小,可以为单元测试生成模拟等等.但是,如果你也可以对反射的使用发表评论,那就太棒了.

c++ reflection

326
推荐指数
8
解决办法
5万
查看次数

如何检查类型是子类型还是对象类型?

要检查类型是否是C#中另一种类型的子类,很容易:

typeof (SubClass).IsSubclassOf(typeof (BaseClass)); // returns true
Run Code Online (Sandbox Code Playgroud)

但是,这将失败:

typeof (BaseClass).IsSubclassOf(typeof (BaseClass)); // returns false
Run Code Online (Sandbox Code Playgroud)

有没有办法检查类型是否是基类本身的子类OR,而不使用OR运算符或使用扩展方法?

c# reflection types subclass

322
推荐指数
3
解决办法
16万
查看次数

如何使用反射来调用私有方法?

我的类中有一组私有方法,我需要根据输入值动态调用一个.调用代码和目标方法都在同一个实例中.代码如下所示:

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType);
dynMethod.Invoke(this, new object[] { methodParams });
Run Code Online (Sandbox Code Playgroud)

在这种情况下,GetMethod()不会返回私有方法.什么BindingFlags我需要提供以GetMethod()使其能找到私有方法?

.net c# reflection private-methods

314
推荐指数
6
解决办法
16万
查看次数

使用反射设置对象属性

在C#3.5中是否有一种方法可以使用反射来设置对象属性?

例如:

MyObject obj = new MyObject();
obj.Name = "Value";
Run Code Online (Sandbox Code Playgroud)

我想obj.Name用反思来设定.就像是:

Reflection.SetProperty(obj, "Name") = "Value";
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点吗?

.net c# reflection properties

308
推荐指数
8
解决办法
24万
查看次数

使用类名创建实例并调用构造函数

有没有办法在给定类名(动态)的情况下创建特定类的实例,并将参数传递给其构造函数.

就像是:

Object object = createInstance("mypackage.MyClass","MyAttributeValue");
Run Code Online (Sandbox Code Playgroud)

哪个"MyAttributeValue"是构造函数的参数MyClass.

java reflection instantiation

299
推荐指数
7
解决办法
42万
查看次数