C# 如何使用反射创建一个;反光机“;

C# 如何使用反射创建一个;反光机“;,c#,reflection,C#,Reflection,好吧,这个标题有点糟糕,但我想不出更好的了(也许其他人可以?) 所以我有一些关于这个主题的问题。我想做的是创建一个程序,该程序可以获取一个对象,并使用反射来列出其所有属性、方法、构造函数等。然后,我可以在运行时操作这些对象,以测试、调试并准确了解我的一些类/程序在运行时正在执行的操作,(其中一些是windows服务,可能安装在计算机上,而不是在VS的调试中运行) 因此,我将为程序提供一个钩子,该程序可以从本地计算机(仅)获取主对象的实例,从而查看其中运行的所有子对象(为了安全起见,程序可能需要使

好吧,这个标题有点糟糕,但我想不出更好的了(也许其他人可以?)

所以我有一些关于这个主题的问题。我想做的是创建一个程序,该程序可以获取一个对象,并使用反射来列出其所有属性、方法、构造函数等。然后,我可以在运行时操作这些对象,以测试、调试并准确了解我的一些类/程序在运行时正在执行的操作,(其中一些是windows服务,可能安装在计算机上,而不是在VS的调试中运行)

因此,我将为程序提供一个钩子,该程序可以从本地计算机(仅)获取主对象的实例,从而查看其中运行的所有子对象(为了安全起见,程序可能需要使用arg启动以公开该钩子)

“反射机器”将允许运行时操作和查询

这听起来可能吗

程序是否必须提供一个钩子,或者“反射机器”是否可以获取一个EXE并(如果它知道它使用的所有类)创建一个要使用的对象

我知道你可以在运行时导入DLL,这样它就可以了解所有种类的类,但是你可以导入单个类吗?例如,假设我有一个没有编译成DLL的项目“Y”,但我想在它上面使用“反射机器”,我可以指向该目录并获取文件以引用这些类吗


编辑:我很想自己尝试并开发它,但我已经有一长串我想做的项目,并且已经开始了。既然已经有很多项目可供选择,为什么还要重新发明轮子呢。

试试看。它用于对WPF/WinForms进行运行时操作和查询,但是源代码可用,而且如果它已经不能满足您的需要,这将是一个很好的开始。

如果我正确理解您的意思,Powershell实际上可以完成几乎所有这一切。

听起来好像Corneliu Tusnea's可能接近您想要的运行时查询对象/属性等。他称之为.NET运行时对象编辑器。我不确定我在上面链接的主页或是最适合开始的地方


我认为这已经有点过时了,但是有一个问题,你可以从中看到他是如何做的以及做了什么的源代码。

看看这个关于如何构建

你所需要做的就是把那套机器放在你可用的机器里 运行时库,我认为它可以满足您的需求。 (这可能不像我在实践中说的那么容易)

我猜你还需要一个运行时编译器,这样你就可以 制造受检程序的仪表化/转换变体 收集所需的运行时数据。您可能会发现 机械提供静态分析结果,让您避免
在很多情况下都会进行运行时分析。

我喜欢Crack.Net,它看起来很糟糕。它将用于工作环境,我们的机器上没有3.5,也没有ironpython(他们不喜欢在不需要的时候添加额外的位).Powershell看起来很有趣,值得探索。Hawkeye看起来很棒,可能很理想。Hawkeye可以用于命令行应用程序吗?我很快就尝试了一下,似乎只能挂接到windows窗体应用程序。我没有广泛使用它,但我想你是对的,它不能挂接到控制台应用程序。Than's AR。我想我会看看我不知道为什么这个问题被否决了。这似乎是一个有趣的想法。被否决了。