Tag: reflection器

reflection大师:为什么我的MethodInfo对象不相等?

基本上,在静态System.Linq.Expressions.Expression.Bind()方法中发生的一些内部检查在我的属性上显示“方法不是属性访问器”,显然是属性。 使用Reflector,我已经最小化了导致问题的代码量,而且我不能为我的生活找出为什么会发生这种情况。 我唯一的猜测是,它与属性不属于类本身的事实有关,但我认为这应该仍然有效: 我试图用尽可能少的代码做一个小例子。 下面的代码应该完整运行。 using System; using System.Reflection; public class Base { public virtual int Id { get; set; } } // As you can see, SubClass does not override the Id property of Base. public class SubClass : Base { } class Program { static void Main(string[] args) { // Getting the property […]

是否可以将标记有MethodImplOptions.InternalCall的方法链接到其实现?

在尝试查找exception的可能原因时,我正在使用Reflector跟踪代码路径。 我已经越来越深入,但结果是一个方法调用看起来像: [MethodImpl(MethodImplOptions.InternalCall)] private extern void SomeMethod(int someParameter); 该方法的这个标记告诉框架在某处调用C ++函数。 有没有办法找出实际调用的方法,反过来又可能调用什么方法? 注意:我真的不想看到这个方法的源代码,我只是想知道可能抛出exception的东西,我看到它来自这个方法调用。

.netreflection器中的错误

我用.netreflection器reflection了一个程序并在visual studio中打开它。 每种forms的一个项目是: bool IControlByOptions.get_IsDisposed() { return this.IsDisposed; } 当我构建解决方案时,它有一个错误: ‘Solo.Module.CtrlProductForm.Solo.Base.IControlByEdition.get_IsDisposed()’ explicit method implementation cannot implement ‘Solo.Base.IControlByEdition.IsDisposed.get’ because it is an accessor. IControlByOptions文件内容: using System; namespace Solo.Base { public interface IControlByOptions { bool IsDisposed { get; } void RefreshUIFromCompanyOrPersonalOptions(); } } 如何解决这个错误?

RedGate Reflector从.net程序集中恢复源代码

快问。 我可以使用RedGate Reflector恢复丢失的.cs文件吗? 我的程序集是一个调试版本

将dll转换为csproj ou sln

我在一个现有的ASP.NET MVC项目上工作。 该解决方案使用FluentNHibernate组件(v 1.0.0)。 前团队中的某个人(解决方案是MVC2)在其上工作,修改了组件源(为了改变行为)。 修改和编译的dll包含在MVC解决方案中。 现在,我将解决方案转换为MVC 5,并通过NuGet包更新现有库。 不幸的是,我不能用FluentNHibernate组件做同样的事情,因为如果我更新它,它会丢失修改后的行为,如果我使用更新的版本会产生错误。 修改后的组件的来源不可用。 我能做什么? 我决定从gitHub获取FluentNHibernate 1.0.0版本,比较项目文件,注意差异,并将其包含在实际(v 1.4.0.0)FluentNHibernate代码中。 为了比较差异,我需要从(修改的)dll中获取原始代码。 是否有加载项或可以将dll转换为项目的东西 ? 我知道(并且我使用)RedGate的Reflector ,但是我想从dll获取所有必需的c#文件 ,而不仅仅是查看类定义代码。

委托人的构造函数和成员函数在何处定义?

当我在Reflector中查看Action委托时,我看到它有一个类似的构造函数 public Action(object @object, IntPtr method); 但我找不到任何相同的主体以及其他成员函数,如Invoke , BeginInvoke等。我只能看到它的定义。 这些function在哪里定义? 它们是否在.net BCL之外定义?

反编译VB.Net程序集会生成带有无效成员变量名的代码; 名称以$ STATIC $开头

我正在为一个丢失了其VB.Net WinForms应用程序源代码的客户端工作。 他们拥有的组件根本没有混淆。 我试图恢复尽可能多的源代码作为C#源代码,并尝试了几种用于反编译程序集的工具,包括Reflector,ILSpy和JustDecompile(所有最新版本),但它们都产生了大量错误的代码。他们。 由于生成的代码中存在大量错误,我将询问具体的错误(在不同的问题中),希望得到更直接的答案,并以这种方式尝试解释为什么所有工具都难以反编译这个集会。 这个问题涉及这样一个事实,即所有这些工具生成的代码总是有大量无效的成员变量(字段),如下所示: private short $STATIC$Report_Print$20211C1280B1$nHeight; private ArrayList $STATIC$Report_Print$20211C1280B1$oColumnLefts; private StaticLocalInitFlag $STATIC$Report_Print$20211C1280B1$oColumnLefts$Init; 有人可以解释为什么生成的代码有这些无效的成员变量以及我如何解决这些变量?

对象类型末尾的&符号是什么?

我不得不重新编译一些代码,我不知道这个语法是什么? 你可以帮忙,还是指点一下这是什么意思? 我用谷歌搜索并搜索了这个网站,找不到任何东西。 只需一行代码: Rectangle pageBounds; // ISSUE: explicit reference operation // ISSUE: variable of a reference type Rectangle& local = @pageBounds; Rectangle对象类型末尾的“&”符号是什么,pageBounds变量之前的“@”是什么? 这是我需要修复的最后一行代码,以便再次编译这个可执行文件。 这是使用此语法的方法,我可以删除它吗? protected override void OnPrintPage(PrintPageEventArgs e) { Application.DoEvents(); ++this._pageNum; float num1; if (this.Header != null) { num1 = this.Header.CalculateHeight(this, e.Graphics); this.Header.Draw(this, (float) e.MarginBounds.Top, e.Graphics, e.MarginBounds); } else num1 = 0.0f; float […]

使用reflection器创建VisualStudio项目

我有一个.exe应用程序,我想更好地理解 – 我可以在reflection器中看到它 有没有办法让reflection器用代码创建一个VS项目,以便我可以在Visual Studio中正确查看它?

.net Reflector反编译的C#代码将无法编译

我试图反编译C#控制台应用程序并在Visual C#2010中再次编译它,但代码中有很多错误。 这是一个例子: public static Test mTest { [CompilerGenerated] get { return k__BackingField; } [CompilerGenerated] set { k__BackingField = value; } } 我在.net Reflector中将.net框架版本设置为3.5。 有没有办法获得能够从.net Reflector重新编译的代码?