Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以通过app.config将.NET动态链接库“注入”到另一个.NET应用程序中?

是否可以通过app.config将.NET动态链接库“注入”到另一个.NET应用程序中?
EN

Stack Overflow用户
提问于 2010-02-03 13:14:12
回答 4查看 1.8K关注 0票数 3

我用C#创建了一个.NET类库,用于初始化一些日志记录,并将其发送到外部工具。该库完全独立于任何应用程序,但为了初始化它,我至少需要对它进行一次方法调用。

有没有办法让我把一些东西放到app.config中,它会自动加载那个动态链接库,并在其中调用一些东西?我可以更改内容以适应任何内容,我不需要支持任何自己的类名或方法名或其他什么。

注意,除了更改app.config文件之外,我需要在不对相关应用程序进行任何更改的情况下完成此操作。

这个是可能的吗?如果是这样,我应该看什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-03 23:36:48

这让我对如何做感到困惑了一段时间。我最初认为可以通过创建一个配置日志的自定义WebProxy,并使用配置元素将其加载到主应用程序中来实现。然而,这受到与其他配置建议相同的问题,即代码仅在需要时运行(在本例中,使用HTTP请求时)-因此需要对原始应用程序进行更改。

不过,我已经通过逆转方法实现了这一点。您可以编写配置日志记录的应用程序存根,然后启动原始应用程序,而不是尝试让原始应用程序配置日志记录。

为例:

我有一个名为Forms.exe的WinForms应用程序,它的入口点定义如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[STAThread]
internal static void Main()
{
    Application.Run(new MainForm());
}

在我的存根应用程序(作为控制台应用程序)中,我配置日志记录,然后加载并运行Forms.exe

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
internal static void Main()
{
    ConfigureLogging()
    Assembly app = Assembly.LoadFrom(@".\Forms.exe");
    app.EntryPoint.Invoke(null, null);
}

这将使用反射将另一个应用程序加载到配置日志的应用程序中。

警告:

  • 另一个应用程序必须是.Net应用程序才能以这种方式加载它
  • 您可能需要使用Reflector来检查另一个应用程序,以确定要传递给入口点的正确参数(即.如果需要string[] args,您可能需要传入一个空的string[],而不是null,因为在其他应用程序运行时,原始应用程序的控制台窗口会挂起(这可能不是问题,但如果是这样,您可以尝试使用FreeConsole)

隐藏它

票数 1
EN

Stack Overflow用户

发布于 2010-02-03 13:19:12

这可能会被认为是一种黑客行为,但如果您将继承ConfigurationSection的内容放入dll中,并将该配置节添加到您的app.config中,这将允许您执行配置节的构造函数中的代码,从而执行您想做的几乎所有事情。它当然只会被调用一次,在应用程序启动时,但如果我理解正确的话,那就足够了。

票数 2
EN

Stack Overflow用户

发布于 2010-02-03 13:38:07

Snoop使用一些C++伏都教来做到这一点。幸运的是,源代码是可用的-查看名为"ManagedInjector“的项目

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2192067

复制
相关文章
AVL树
平衡二叉树,是一个方便查找的树,树的左子树深度与右子树的深度的差总(BF)是在+1,0,-1之中。 随着树的建立,插入,树都会自动的进行调整,使得其满足上面的条件。 1、+1表示左子树的深度比右子树的深度多1. 2、0 表示左子树的深度与右子树的深度相同。 3、-1表示左子树的深度比右子树神的小1. 因此,如果一个数据插入到情况1中,也就是说,数据插入到左子树中,左子树的深度将会比右子树多2.此时,需要调整树的结构。如果插入尾端节点的左子树中,则这个尾端节点相应的BF值,就变成+1.相反,如果插入到它的右子
用户1154259
2018/01/17
8160
AVL树
AVL树
详细描述,好像跟我自己写的差不多......不过终究是大神级别,讲的就是透彻 1. 概述 AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 2. 基本术语 有四种种情况可能导致二叉查找树不平衡,分别为: (1)LL:插入一个新节点到根节点的
用户1154259
2018/01/17
7900
AVL树
AVL树
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,导致其效率低下。
DioxideCN
2022/08/05
3770
AVL树
AVL树
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/83059431
zy010101
2019/05/25
4640
AVL树—-java
AVL树—-java
全栈程序员站长
2022/07/13
7250
AVL树—-java
手写AVL 树
平衡二叉树 左旋,右旋,左右旋,右左旋 具体原理就不说了,网上教程很多。这里只实现了建树的过程,没有实现删除节点的操作。 下一篇会实现删除节点的操作。 // // main.cpp // AVL // // Created by 小康 on 2019/3/30. // Copyright © 2019 小康. All rights reserved. // #include <iostream> #include <stdio.h> #include <stdlib.h> #include <mat
ShenduCC
2019/04/01
4990
C++【AVL树】
普通的二叉搜索树可能会退化为单支树(歪脖子树),导致搜索性能严重下降,为了解决这个问题,诞生了平衡二叉搜索树,主要是通过某些规则判断后,降低二叉树的高度,从而避免退化,本文介绍的 AVL 树就属于其中一种比较经典的平衡二叉搜索树,它是通过 平衡因子 的方式来降低二叉树高度的,具体怎么操作,可以接着往下看
北 海
2023/07/01
1510
C++【AVL树】
AVL树探秘
一、AVL树   AVL树是一种平衡查找树,在前面的两篇文章:二叉搜索树 和 红黑树 中都提到过。由于二叉搜索树在某些特殊情况下是不平衡的(任意一个结点深度过大),因此其一些动态集合操作在最坏情况下的时间复杂度为O(n)。因此提出一些对二叉搜索树效率改进的树结构使最坏时间复杂度降为O(lgn),AVL树和红黑树就是其中的代表,除此之外,还有一些如AA-tree、B-tree、2-3-tree等。使不平衡树变平衡最关键的是找到“平衡条件”,我们已经在前面一篇文章中详述了红黑树的平衡条件是:对节点进行着色,并约
Linux云计算网络
2018/01/11
9660
【C++】AVL树
二叉搜索树虽可以缩短查找的效率,但 如果数据有序或接近有序二叉搜索树将退化为单支树,查
青衫哥
2023/03/31
3100
【C++】AVL树
AVL树(Java语言)
平衡二叉树也叫平衡二叉查找树,又被称为AVL树,可以保证查询效率较高。它的特点是:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 结点的平衡因子定义为:结点的左子树高度与右子树高度之差。显然,对一棵AVL树而言,其所有结点的平衡因子只能是-1,0,1.挡在一棵AVL树上插入一个结点时,有可能导致失衡,即出现绝对值大于1的平衡因子。
技术交流
2022/11/18
4210
AVL树(Java语言)
C++AVL树
AVL树 零、前言 一、AVL树的概念 二、AVL树结点定义 三、AVL树的插入 四、AVL树的旋转 1、左单旋 2、右单旋 3、左右双旋 4、右左双旋 5、总结 五、AVL树的验证 六、AVL树的性能 零、前言 本章主要讲解map和set的底层结构平衡二叉搜索树的一种-AVL树的特性及其实现 一、AVL树的概念 引入: map/multimap/set/multiset其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷 假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化
用户9645905
2022/11/30
4320
C++AVL树
AVL二叉树AVL二叉查找树
AVL二叉查找树 AVL二叉查找树是一种特殊的二叉查找树,其规定 每个节点的左子树和右子树的高度差最多是1 AVL调整算法 AVL树插入一个新的节点到某个节点下破坏AVL树的要求时,对于破坏条件的第一个节点a(最靠近底部/深度最深的节点),具有四种情况: 插入a的左儿子节点的左子树 插入a的左儿子节点的右子树 插入a的右儿子节点的左子树 插入a的右儿子节点的右子树 其中,第一种和第四种可以看成一种情况的镜像,均是插入外侧;第二种和第三种可以看成另一种情况的镜像,均是插入内侧。这两种情况分别对应两种不同
月见樽
2018/04/27
6440
AVL二叉树AVL二叉查找树
C++:AVL树
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下,时间复杂度为O(N);
二肥是只大懒蓝猫
2023/03/30
3840
C++:AVL树
手写AVL 树(下)
上一篇 手写AVL树上实现了AVL树的插入和查询 上代码: 头文件:AVL.h #include <iostream> template<typename T1,typename T2> struct Tree { Tree* leftChild; Tree* rightChild; Tree* father; T1 key; T2 value; int leftHeight; int rightHeight; }; template<t
ShenduCC
2019/04/18
4990
C++——AVL树
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。 因此,两位苏联的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。
有礼貌的灰绅士
2023/04/27
2510
C++——AVL树
动画 | 什么是AVL树?
首先介绍下 二分搜索树 ,它又名有序二叉查找树,它的特点是左子树的节点值要小于父节点值,右子树的节点值要大于父节点值。基于这样的特点,我们在查找某个节点的时候,可以采取二分查找的思想快速找到这个节点,时间复杂度期望值是为O(log n),但是它有最坏的的情况下。
我脱下短袖
2020/01/02
8670
04-树4. Root of AVL Tree-平衡查找树AVL树的实现
  对于一棵普通的二叉查找树而言,在进行多次的插入或删除后,容易让树失去平衡,导致树的深度不是O(logN),而接近O(N),这样将大大减少对树的查找效率。一种解决办法就是要有一个称为平衡的附加的结构条件:任何节点的深度均不得过深。有一种最古老的平衡查找树,即AVL树。   AVL树是带有平衡条件的二叉查找树。平衡条件是每个节点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定义为-1)。相比于普通的二叉树,AVL树的节点需要增加一个变量保存节点高度。AVL树的节点声明如下: typedef stru
llhthinker
2018/01/24
9560
TypeScript实现AVL树与红黑树
二叉搜索树存在一个问题: 当往树中插入的数据一大部分大于某个节点或小于某个节点,这样就会导致树的一条边非常深。为了解决这个问题就出现了自平衡树这种解决方案。
神奇的程序员
2022/04/10
5310
TypeScript实现AVL树与红黑树
C++之AVL树
前面我们介绍了STL中的关联式容器map/set/multimap/mutiset等,我们可以发现它们的底层都是按照二叉搜索树来实现的,但是二叉搜索树自身有一些缺陷,当往二叉搜索树中插入的元素有序或者接近有序二叉搜索树就会退化为单支,其检索的时间复杂度就会退化为O(n)。因此map、set等关联式容器的底层结构是对搜索二叉树进行平衡处理的平衡二叉搜索树。 本节我们就来了解平衡搜索二叉树AVL树的相关概念。
摘星
2023/04/28
8240
C++之AVL树
点击加载更多

相似问题

卡桑德拉不是按主键排序的

32

卡桑德拉的主键

16

非EQ关系错误卡桑德拉-如何修复主键?

11

卡桑德拉写时主键

13

C#卡桑德拉复合主键

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文