问题标签 [getcustomattributes]

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 回答
37982 浏览

c# - 如何获取自定义属性?

我已经使用 2.0 框架尝试了以下代码并且我得到了一个属性,但是当我在紧凑框架上尝试这个时,它总是返回一个空数组。MSDN 文档说它支持,我做错了吗?

0 投票
2 回答
5061 浏览

.net - VB.net 自定义属性值

我是自定义属性的新手,所以我想知道是否可以获取属性的值。我使用自定义属性的类中的属性示例是:

我正在尝试获取这些属性的值(即获取位置 = 378、长度 = 34 等)。我开始的循环看起来像这样:

这让我得到了所有属性的名称,但我不确定如何获取这些值。有任何想法吗?

干杯,

瑞安

0 投票
1 回答
979 浏览

code-access-security - 从网络共享加载的程序集上的 System.Type.GetCustomAttributes 未显示所有属性

我有一个托管 dll - repro.dll,其中包含装饰有 2 个属性的类 TestModuleCommand:System.ObsoleteAttribute 和 System.Management.Automation.CmdletAttribute(来自 Windows 7 中 GAC 中的 System.Management.Automation.dll)

如果将 repro.dll 放在本地目录中,我可以看到从 System.Type.GetCustomAttributes(false) 返回的两个属性。如果将 repro.dll 放在网络路径中,那么我只能看到一个属性(尽管我仍然可以通过 System.Reflection.CustomAttributeData.GetCustomAttributes(MemberInfo) 看到这两个属性)。这是不希望的——我想查看这两个属性(我知道实例化 CmdletAttribute 不会产生安全影响)。

根据我在网上找到的内容,我隐约知道 repro.dll(如果从网络位置加载)无法完全看到 SMAdll。我认为 CAS 允许我在 System.Management.Automation 中声明 CmdletAttribute 是安全的,但我无法弄清楚如何编写该声明。我在哪里可以阅读更多内容以完全了解正在发生的事情?欢迎任何智慧之言。

谢谢,

卢卡斯

PS。以下是任何人都可以在 powershell.exe 提示符下尝试的重现(在 Windows 7 中 - Add-Type cmdlet 在 PowerShell v2 中是新的):

0 投票
1 回答
559 浏览

c# - C# - Silverlight - 带有枚举的 CustomAttribute

我有以下课程:

该类编译得很好,但是当我用它装饰我的财产时:

编译器吐出:

Error 1 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type C:\...\CompanyX.Modules.Home\HomeModule.cs 28 33 CompanyX.Modules.Home

0 投票
2 回答
980 浏览

.net - 在 .Net 中,为什么调用 Type.GetCustomAttributes(true) 时不返回接口上声明的属性?

在回答这个问题时,我尝试Type.GetCustomAttributes(true)在一个实现接口的类上使用该接口定义了一个属性。我惊讶地发现GetCustomAttributes没有返回接口上定义的属性。为什么不呢?接口不是继承链的一部分吗?

示例代码:

输出:无

0 投票
1 回答
4773 浏览

c# - 自定义属性(例如显示名称)未与 GetCustomAttribute 一起列出

我有一些代码来定义自定义属性,然后读入代码,它无法工作。为了尝试解决问题,我返回并尝试使用 DisplayName,但是,我仍然遇到相同的问题 GetCustomAttribute 或 GetCustomAttributes 无法列出它们。我有一个下面的例子。

我在一个类中设置了一个 DisplayName 属性,例如...

然后我有一些代码来列出上面类中每个方法的 DisplayName 属性。

问题是没有列出 DisplayName 属性,上面的代码编译、运行并且不显示任何消息框。

我什至尝试将 for each 循环与 GetCustomAttributes 一起使用,再次列出每个方法的所有属性,从未列出 DisplayName 属性,但是,我确实获得了编译属性和其他此类系统属性。

有人知道我做错了什么吗?

更新 - 非常感谢 NerdFury 指出我使用的是方法而不是属性。一旦改变一切工作。

0 投票
2 回答
1312 浏览

c# - 为什么 ICustomAttributeProvider.GetCustomAttributes() 返回 object[] 而不是 Attribute[]?

为什么ICustomAttributeProvider.GetCustomAttributes()返回object[]而不是Attribute[]

使用 mscorlib 和 System 程序集的实现时是否有任何情况ICustomAttributeProvider会返回非类型的对象Attribute

0 投票
2 回答
277 浏览

c# - 如何反向解析自定义属性?

我有一个带有自定义属性的枚举,例如:

“前进”方式似乎很容易,带有一个枚举值,并使用反射、GetCustomAttributes 等获取自定义属性。

但我想要某种反向解析。有一个 char 值,我想有一个 enum 值可以使用。

就像是:

如果我将“A”作为值参数,它应该返回 EnumStatus.value1。

有任何想法吗?我不想制作额外的哈希表,推迟枚举。

太感谢了!

0 投票
1 回答
626 浏览

.net - 通过 linq 表达式从被覆盖的属性中获取属性

我正在尝试使用GetCustomAttributes()来获取在属性上定义的属性。问题是该属性是一个被覆盖的属性,我无法弄清楚如何从表达式中提取被覆盖的属性。我只能弄清楚如何获得基类的。

这是一些代码

现在我正试图MyAttribute摆脱抽象类。但我需要通过Expression. 这是我一直在使用的:

不幸的是atts,最终是空的。问题是menberType最终是 forText.Content而不是Abstract.Content类。所以当我得到属性时,它什么也不返回。

0 投票
1 回答
2177 浏览

c# - 为什么 MemberInfo.GetCustomAttributes(Type) 被定义为返回一个属性数组?

假设我有FieldInfo,我可以通过两种方式进行:

没关系。

但是下面的返回[]而不是Attribute?

这个问题实际上与 MS 的设计选择无关。我的问题是我是否应该担心field.GetCustomAttributes返回特定属性类型的多个项目?在什么情况下会发生这种情况?

我猜永远不可能。我想我应该在编写一些反射辅助函数时处理它。