小编And*_*rew的帖子

使用反射在DLL中覆盖方法

我甚至不确定这是否可能,如果不是,那么道歉.我搜索广泛,没有找到我要找的东西.

基本上我们有一个由第三方制作的应用程序,完全生硬的是垃圾.我们有一个特定的问题,并设法使用ILSpy跟踪DLL中的方法的问题.显然,我们没有(也无法获得)源代码,并且有问题的公司不愿意在任何合理的时间范围内解决问题.

所以,我们已经调查了各种调查途径并且没有提出任何建议.我一直在研究是否可以使用反射完成这一点,这几乎是我们让这个工作的最后希望.简而言之,我想做的是以下内容:

  • 创建一个与现有DLL同名的简单类库
  • 使用反射从现有DLL导入方法
  • 以某种方式用我自己的正确代码覆盖有问题的方法
  • 重建代码,所以我有一个新的DLL,包含现有DLL的99%的功能,但我的覆盖代码提供了正确的功能.

我在调查过程中发现了TypeBuilder.DefineMethodOverride以及StackOverflow中的一个页面,它看起来很相似,但并不是我想要的.

http://msdn.microsoft.com/en-us/library/system.reflection.emit.typebuilder.definemethodoverride.aspx

有没有办法用反射"覆盖"方法?

任何建议赞赏!

安德鲁

编辑

我有另一个可能的想法是生成一个包含覆盖函数的分部类,但这似乎也不可行.

c# reflection dll

8
推荐指数
1
解决办法
6175
查看次数

在 Visual Studio 2019 中升级 xproj

我需要在 Visual Studio 2019 中升级 xproj 类型的项目。当我尝试打开解决方案时,它说它需要升级,但随后我收到以下消息:

不再支持 Xproj 项目文件。有关迁移到 csproj 的详细信息,请参阅https://docs.microsoft.com/en-us/dotnet/core/migration/

链接的文档提到在 Visual Studio 中执行此操作(不起作用)或使用 dotnet migrate。当我尝试这样做时,我得到以下信息:

Could not execute because the specified command or file was not found.
Possible reasons for this include:
  * You misspelled a built-in dotnet command.
  * You intended to execute a .NET Core program, but dotnet-migrate does not exist.
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH. …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio visual-studio-2019

5
推荐指数
1
解决办法
3451
查看次数

Mock 不包含 Setup 的定义

我是 Moq 的新手,在让它工作时遇到了问题。

到目前为止,我的代码如下:

 private Mock _serviceMock;

 [SetUp]
 public void Setup()
 {
     _serviceMock = new Mock<IMyInterface>();
 }
Run Code Online (Sandbox Code Playgroud)

我的界面中有两种方法,但是当我使用时_serviceMock.Setup出现错误

“模拟不包含安装程序的定义”。

我想我在这里遗漏了一个参考或一些明显的东西,但谷歌让我失望了一次!

我在我的项目中引用了 Moq 和 Nunit.Framework,并且使用的是 Moq 版本 4.10.0 和 NUnit 3.11.0,所有版本都通过 Nuget 安装。

c# nunit unit-testing moq

3
推荐指数
1
解决办法
2057
查看次数

使用sed awk替换另一个文件中定义的变量

我有一个users.txt文件格式:

User:CityID
Carl:0212
Syd:0312
Rick:9323
Run Code Online (Sandbox Code Playgroud)

和格式的city.txt文件

Anaheim:0212
San Jose:0312
Run Code Online (Sandbox Code Playgroud)

我需要使用city.txt文件中的城市名称替换users.txt中的每个CityID.我如何使用sed和awk实现这一目标?

我可以使用awk获取CityID的列:

awk -F$'\:' '{print $2}'< users.txt
Run Code Online (Sandbox Code Playgroud)

但它如何用相应的城市名称取代它们呢?

谢谢.

bash awk sed

1
推荐指数
1
解决办法
852
查看次数

标签 统计

c# ×3

awk ×1

bash ×1

dll ×1

moq ×1

nunit ×1

reflection ×1

sed ×1

unit-testing ×1

visual-studio ×1

visual-studio-2019 ×1