问题标签 [system.reflection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
246 浏览

.net - 在类实例中深度查找属性类型

我有一个方法可以解析 xml 并从该 xml 创建一个指定类型的对象。这一切都是使用泛型完成的,以便为所有类型提供通用方法。

我的问题是我想使用其类型名称(而不是名称)在各种类中搜索属性。假设属性的类型为“type1”,那么下面声明了一些类定义:

对于上述所有声明的类,如果我创建对象,那么我想访问上述类的每个实例的类型化属性,type1即我应该能够type1从类的对象中foo1获取声明为属性的值。我真的想要一种通用的方法来做到这一点,因为课程可能会增加。foo2foo3

0 投票
1 回答
1333 浏览

.net - Environment.CurrentDirectory 与 System.Reflection

在以下获取正在执行的程序集的工作目录的方法中,是否有关于哪一种被认为是最佳实践的建议?我从我的开发人员那里听说方法 1 在 Windows 7 SP1 64 位上有时会失败,除非以提升的权限运行(以管理员身份运行)。但是方法 2 一直有效。前者有时会失败是否有原因?

方法一:

方法二:

0 投票
1 回答
326 浏览

c# - 使用 NUnit+Reflection,在我的 ActiveX 控件上找不到任何事件

我正在使用 NUnit 和 C# 对老式 COM/ActiveX 控件进行单元测试。我正在动态地做所有事情,没有引用或编译时类型信息,因为我正在测试的控件主要来自 javascript - 当然,它动态地做所有事情。我想连接一些事件处理程序并确保事件被适当地触发,但我找不到事件!我使用 System.Activator.CreateInstance 动态构造控件的实例,如下所示(省略了一些细节;-):

属性和方法的测试工作正常,如下所示:

以下都失败,返回 null 或空数组或适当地抛出“未找到名称”异常:

我只是假设(咳咳)我可以使用反射 API 做一些事情,相当于:

但我不知道那个等价的东西是什么。编辑:我相信该控件上的那个事件,因为在 Javascript 中它可以工作(并捕获事件):

0 投票
3 回答
97 浏览

c# - 以编程方式访问 .NET API

有没有办法检索有关 .NET API 的元数据?

例如,假设我想获取System.Windows.Documents.List. 最好以某种结构化格式(例如 XML、JSON 等)获取此信息。每个条目应类似于:

我想避免不得不筛选 MSDN 库。:-)

0 投票
1 回答
333 浏览

c# - 从 Interop 对象获取动态成员和 SetValue

我有这个作为 System.__ComObject 出现的互操作对象,我想使用变量名设置值:

我还需要检查动态成员以查看可用的内容。一些成员(以 Ref 结尾的成员)有子成员,所以我也需要深入研究它们。

在调试中,动态成员如下所示。(对不起,我不能发布图片)

http://www.mezzodev.com/qintegrator/download/debug1.png

http://www.mezzodev.com/qintegrator/download/debug2.png

0 投票
2 回答
841 浏览

msbuild - msbuild 中的反射问题,devenv 很好

我已经完成了与此相关的 SO 问题,但找不到任何与此问题相关的问题,因此,我在问这个问题。

我有一个构建任务(作为AfterBuild目标添加),用于验证类型名称。这些类型名称是来自正在构建的 silverlight 项目的完全限定类型名称。

为了解析这些类型名称,我使用Type.ReflectionOnlyGetType(). 为了加载依赖程序集,我处理AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve事件以从项目输出路径加载项目特定程序集,并使用Assembly.ReflectionOnlyLoadFrom(filepath).

当我在 VS2010 中构建项目时,这工作得很好,但是当我使用 MSBuild 构建时失败,C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "C:\Root\branches\x.x.x\clients.sln" /t:rebuild /p:Configuration=Debug "/p:Platform=Any CPU" /v:quiet /maxcpucount:1

使用 MSBuild 构建时,ReflectionOnlyAssemblyResolve会触发该事件,"System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"并且该事件是从 silverlight 安装路径加载的。但是,正在尝试对 中的此系统程序集进行探测"C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/System.DLL",但由于主版本不匹配而失败。

以下是我的代码的剥离版本,专门针对这个问题:

我得到的异常如下:

我还尝试将 silverlight 程序集路径包含到 AssemblySearchPaths 项目属性中,以使其成为探测 url 的一部分并且仍然相同。

0 投票
2 回答
2047 浏览

c# - 如何动态加载 XAML 以获取控件信息

我正在尝试加载一个 Silverlight 项目来读取每个文件,方法是使用每个类的XAML反射创建一个实例来读取其控件。Activator.CreateInstanceXAML

C#代码:

也许,反射无法识别 Silverlight 风格ComboBoxStyle。我怎么可能创建一个实例来动态读取 XAML 文件中的每个控件?

0 投票
2 回答
2238 浏览

c# - 序列化在运行时创建的类

我从不同的客户那里获得了多个 XSD,我需要以符合他们提供的 XSD 的 XML 格式向他们提供数据。我已经编写了一个代码来使用 codedom、System.Reflection 和 codeprovider 从 XSD 动态创建和编译一个类。现在我的计划是通过多个查询从数据库中获取数据,并将字段映射到创建的动态类的属性并对其进行序列化。我正在寻找一种映射这些字段的通用方法,该方法可用于任何类型的 xsd,并且只需映射它将序列化并提供 XML 文件的字段。至于查询,我将它们放在配置文件中。通用解决方案可行吗?关于如何去做的任何想法或指示?

0 投票
0 回答
1089 浏览

c# - 为什么 GetEntryAssembly 在单元测试中返回 null?

可能重复:
.NET NUnit 测试 - Assembly.GetEntryAssembly() 为空

System.Reflection.Assembly assem = System.Reflection.Assembly.GetEntryAssembly();

运行单元测试时,代码返回 null。我正在测试也返回 null 的第三方实用程序。如果两个程序都返回 null,我无法区分这两个程序。

我可以做些什么来确定我以编程方式在单元测试上下文中运行?由于创建的故障点,我不想将其添加到配置文件中。EG 我忘了翻转这个位,所以它在开发模式下被推送到 Prod。我的老板催促。我不希望他出于明显的政治动机而不得不重复工作或定期更改配置文件。

0 投票
2 回答
1312 浏览

c# - 无法访问嵌入式 nlog 配置文件?

将空错误作为输入流?我在项目文件夹下添加了配置文件。