问题标签 [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.
c# - 反射嵌套实例而不创建新实例
我一直在努力使用一些我认为很简单的反射代码。本质上,我有一个定义方法的接口。然后,我有一个抽象类,它提供了该方法的基本实现。
具体类可以包含其他类的嵌套实例,这些类也可以从同一基类派生。可以通过以下示例来说明:
我的问题是,在 SampleObjectBase 的注释代码中,我无法获得匹配的 PropertyInfo 值的具体实例。如果我查看循环中的 PropertyInfo 对象,我发现类型是正确的,但是我找不到直接访问实现中已经存在的实例的方法。因此,例如,在执行 OuterSampleObject.IsValid() 时,代码会按预期找到 InnerSampleObject 的 PropertyInfo。我想执行 InnerSampleObject.IsValid()。
我已经尝试过(多种变体):
和:
第一个问题是我不能将 null 作为 InvokeMember 的目标传递,因为 IsValid() 不是静态的(也不能是,因为我专注于实际实例)。第二个只是一个蹩脚的演员,但这是我想要完成的事情的要点。
上面的示例代码只是我想要实现的一个极简示例。完整的代码是自我验证 DTO 的一部分,它递归地检查整个层次结构并返回哪些子级存在验证问题以及它们是什么。
任何帮助将不胜感激。
c# - PropertyInfo - 具有属性的 GetProperties
我正在尝试为 webform 项目创建自定义属性验证。
我已经可以从我的类中获取所有属性,但现在我不知道如何过滤它们,只获取具有某些属性的属性。
例如:
这将返回我所有的属性。但是,例如,我如何才能使用“testAttribute”之类的属性返回属性?
我已经对此进行了搜索,但是经过几次尝试解决此问题后,我决定在这里问。
c# - .Net/C# 反射——填充组合框
大家好,
我有一个符合我通过反思获得的特定标准的“类型”列表。每种类型都是用户在运行时可能会选择的不同功能。如果我稍后添加更多子类,这个动态实现将让我不必记住更新用户控件是这里的想法。
类型列表很好,但最好显示一些比名称更有意义的东西,因为它是用代码编写的。例如,代替“RacingBikeDesigner”,我想显示“Racing Bike Designer”,甚至可能显示与该类型相关的其他属性,如“Description”,以便用户知道该特定选择的作用。
所以我想问题是,给定一个类型,我怎样才能为用户提供更有意义的表示?我可以为每个子类添加一个静态字段并从 Type 调用它,或者我可以以某种方式使用类型转换器吗?
用户控件(ListBox、ComboBox 等)绑定到下面的返回值,但它对用户不友好:
干杯,Q
c# - 获取程序集中的类型(错误:System.Reflection.ReflectionTypeLoadException)
我收到“异常详细信息:System.Reflection.ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息”类型的异常。使用以下代码:
我需要获取每个程序集中定义的类型,但似乎无法生成。
我已经通过删除 dll、清理解决方案、重新加载解决方案等执行了与错误程序集创建相关的所有典型程序,但没有发生任何事情。
我想通过找到一种方法来检索错误的更多信息,或者找到哪个程序集产生问题或类似的东西来寻求解决这个问题的想法。当前的异常消息非常模糊,无法意识到问题所在。
ps:附加信息,当我运行重建操作时,所有过程都正确生成,没有错误。
c# - 通过反射获取对象
我正在寻找 c# 中的机制是这样的:
car1 和 car2 是字段
所以我想得到一些带有反射的对象,而不是类型:/我怎样才能在 c# 中做到这一点?
c# - System.Reflection 没有方法
我正在尝试枚举程序集中的所有方法并将它们添加到树视图中的节点:
问题是没有任何方法属于任何模块。我知道这与树视图无关,因为 module.GetMethods().Length 返回 0。我缺少什么吗?
c# - 在多个例程之间使用 try-catch
这在某种程度上是对我之前提出的问题的跟进,尽管我现在能够提供更多代码来改进我的问题并进一步展示我在这方面的问题。
我这里有三个例程。其中两个例程一起工作 - 如果成功,将使用 System.Reflection 将程序集加载到内存中。如果文件没有正确加载到内存中,我希望这些例程返回错误,但由于某种原因,这些 try-catch 语句根本无法按我想要的方式工作。
注意:要使该例程工作,该文件必须是 .net 程序集。例如,如果文件是在 VB6 中编程的,则会引发错误。这是我试图返回给我的错误。
如有必要,我可以澄清更多,但我不确定此时要包括哪些其他信息。
c# - 在 C# 中有条件地实例化一个类
我一直在努力让新代码正常工作。通过 if 语句,我能够以更简单但更广泛的方式做到这一点。但是,由于这将是应用程序的第 2 版,我想让代码更简洁、更高效。
我想做的是有条件地实例化一个类。它会是这样的:
我有两个类,但我想使用关键字“飞机”,所以我不必为每个类创建多个代码部分。我还发现 C# 中没有多重继承(在我看来,这可以解决问题),而且我对这种语言还比较陌生。
到目前为止,我已经完成了以我想要的方式实例化类,但我似乎无法使用每个类中声明的变量。我已经这样做了:
MessageBox 正确显示了类型,但同样,我无法使用“Aircraft”对象访问类本身。我确信有更多方法可以做到这一点,但其中任何一种对我来说都很好。
谢谢!
c# - 查找对象的用户定义成员
我正在尝试创建一个函数,该函数通过使用反射来执行 c# 对象的深层副本。到目前为止,我已经能够为数组做到这一点,但是对于对象,我如何区分用户定义的成员和系统定义的成员?
c# - 通过自定义属性反映时出错
我正在尝试根据类的名称和通过反射存在的自定义属性来获取类的某些字段的值。我的自定义属性是:
使用它的示例类是:
我还有一个具有不同字段名称的不同类:
通过反射,我试图通过匹配属性“名称”参数而不是字段名来复制值。麻烦的是,在反射期间,通过字段传递的 getCustomAttributes() 方法不会发生这种比较。我解决这个问题的方法(到目前为止失败)是:首先我传递2个对象,objSrc(第一类,已填充)和objDesc(第二类为空)
然后我试图迭代地对所有领域进行反射
GetCustomAttributes() 方法出现问题,因为它返回 null。