覆盖 dll 类属性集

2023-12-20

我在我的项目中使用了一千个封闭的 DllClass 实例。

public sealed class DllClass 
{
    public DllClass();
    public string DllClassProperty {get; set;}
}

DllClassProperty 设置已使用一千次,如果在 Web.config 上设置了参数,我需要覆盖设置的值。

我找到了这个界面INotifyPropertyChanged https://learn.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification,但我无法使用它,因为我无权访问该类,也无法扩展它。

我在想,是否有办法做这样的事情,但我认为这在 C# 中是不可能的:

public class OnSetPropertyListener<DllClass>
{
    public void OnSetProperty(PropertyInfo propertyInfo, DllClass instance) 
    {
        // set another value, for example: "new value"
    }
}

如何覆盖 DllClassProperty 中设置的值?是否可以?


令人惊讶的是,有is解决你的问题的方法。它不漂亮,但它满足你的问题的限制。

Step 1:创建一个包装器DllClass,即一个新类MyDllClassWrapper,其行为完全类似于DllClass除了您想要实施的更改之外。这通常是通过重建公共接口来完成的DllClass并将所有操作转发给私人DllClass实例。

现在你只需要使用MyDllClassWrapper您当前使用的任何地方DllClass。您在评论中提到您不想更改所有这些调用,所以让我们将其自动化:

Step 2: Use 替补福迪 https://github.com/tom-englert/Substitute.Fody自动替换所有引用DllClass通过引用MyDllClassWrapper在编译后步骤中:

[assembly: Substitute(typeof(DllClass), typeof(MyDllClassWrapper))]

但请注意,每个阅读您代码的人都会完全困惑,因为源代码指向DllClass, but MyDllClassWrapper被用来代替。因此,我建议您仅将此技术用作临时解决方法直到您找到时间干净地替换所有引用DllClass并参考MyDllClassWrapper.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

覆盖 dll 类属性集 的相关文章

随机推荐

  • 如何生成 LLVM 位码

    我想生成位码文件 bc 因为它是用文档 http llvm org docs GettingStarted html example with clang hello c include
  • 逐字转义字符串文字

    我有以下无法编译的字符串 String formLookupPull SELECT value1 tableName columnName FROM lkpLookups WHERE table tableName and field co
  • JNDI-LDAP 分页

    我设法让分页像描述的那样工作here http docs oracle com javase tutorial jndi newstuff paged results html 问题是我需要公开一个如下所示的 API getUsers pa
  • 重复闹钟不起作用

    我知道这类问题被问了很多次 但请先阅读我的问题 然后再投票或标记为重复 我已经提到了很多这样的问题this https stackoverflow com questions 25948871 is there an accurate re
  • SQL 查询 - 如何不包含某些结果

    如果在我无法正确形式化之前提出这个问题 我深表歉意 我在表中有一个代码列 想要查询它 但删除一些带有某些特定代码的元素 假设我想获取代码从 4 开始的元素 但不包括代码第 6 个数字为 9 1121290 的元素 代码列包含最大长度为 8
  • 尝试向独立 SVG 文件添加工具提示功能时,我收到“无效的‘in’操作数样式”错误

    我正在尝试将工具提示添加到独立的 SVG 文件 但它返回以下错误 TypeError invalid in operand style Break On This Error if name in style 对于以下 jquery 2 0
  • android.support.test.espresso.PerformException:在视图上执行“加载适配器数据”时出错

    我正在使用 Espresso 来测试在搜索项目 例如自动完成 时出现的列表视图 直到用户在 SearchView 中输入内容后 列表视图才会出现 即我将 ListView 设置为View VISIBLE仅当用户在 SearchView 中输
  • 空对象设计模式问题

    我最近看了这个 YouTube 教程 http www youtube com watch v hp1Y9bhail8关于空对象设计模式 尽管其中存在一些错误 例如不执行任何操作的 NullCar 会创建无限循环 但这个概念得到了很好的解释
  • 将视点转换为 MKMapView 坐标

    我的目标是将视图的左上角和右下角转换为纬度 经度坐标 这些纬度 经度坐标将用于查询仅存在于视图中的注释位置 并非全部 5000 我找到了这个Stackoverflow 上的 Objective C 技巧 http stackoverflow
  • 什么时候调用属性?

    我对某些代码感到困惑 在班级中我有一个财产 Class A ClassB objB public int TimedValue objB Timer Inside classB I have classB public int Timer
  • 推送到不同存储库时自动触发 Travis?

    有没有办法在每次推送到存储库 Y 时触发存储库 X 的 Travis CI 构建 具体来说 我希望每次有推送时都启动我的构建http github com tensorflow tensorflow http github com tens
  • 如何列出 .so 文件中的符号

    如何列出从 so 文件导出的符号 如果可能的话 我还想知道它们的来源 例如 如果它们是从静态库中提取的 我正在使用 gcc 4 0 2 如果这有什么区别的话 列出符号的标准工具是nm 你可以像这样简单地使用它 nm gD yourLib s
  • Android - 创建Word文档

    我想创建word doc 和excelAndroid 平台上的 xls 文件 对于Excel我可以使用jexeljar 但我找不到任何用于 word 文件的 API 你能告诉我是否有任何开源 免费的API可以在android平台上编写wor
  • 如何保存 Linq-to-SQL 中的更改?

    所以 这是我对这个常见问题的独特见解 我执行查询 获取对象 然后将对象传递到表单中 并使用对象中的数据填充表单 这不是通过引用传递的 然后 我编辑 通过表单 查询的对象的值 然后返回根据表单中的值构造的新对象 然后我想将其更新到数据库 At
  • Wildfly 8 AS 中的热部署位置

    在JBoss 6 AS中 热部署位置是 JBOSS HOME server default deploy我可以在其中解压 WAR 或 EAR 并更改任何配置文件的内容 并且无需重新启动即可工作 同样 在Wildfly 8 AS中 任何人都可
  • Swift 无法定位和读取属性列表 (.plist) 文件

    我在让一个简单的命令行 OSX Swift 程序从一个简单的 plist XML 文件中读取数据时遇到了一个真正的问题 事实上 该程序甚至看不到该文件 尽管它似乎存在并复制到捆绑包中 数据由一个类处理 该类旨在读取 plist 数据并将其复
  • 如何从 highcharts 制作响应式饼图

    几天以来 我一直在尝试从 highcharts 中制作一个响应式饼图 我正在从事一个中等规模的项目 有时很容易失去概览 我已经检查过了 http www angulartutorial net 2014 03 responsive high
  • 向现有 Corda 网络添加新节点

    我正在尝试在 corda 网络中添加新节点和现有节点 我是作为文档做的 但无法实现 正如文档中所述 这足以创建一个包含 node conf 的文件夹吗 如果那么它在运行引导程序时不会更新文件夹中的数据和信息 但我可以通过添加 corda 和
  • 单元测试中的修补不起作用,正在调用实际方法

    我有一个 python 文件 update baseline manifest py 现在 我正在编写单元测试 想要修补 read file 和 write file 我已经这样做了 def update baseline manifest
  • 覆盖 dll 类属性集

    我在我的项目中使用了一千个封闭的 DllClass 实例 public sealed class DllClass public DllClass public string DllClassProperty get set DllClas