Action 参数上设置的 CustomAttribute 是否可用?

问题描述 投票:0回答:1

在操作上设置自定义属性时是否可以读取自定义属性。

以下示例失败。

var simpleAction = new Action<string, string>((
    [CustomAttr(DisplayName = "MyFirstArg")] a,
    [CustomAttr(DisplayName = "MySecondArg")] b) => { });

var parameters = simpleAction.GetType().GetMethod("Invoke")!.GetParameters();

foreach(var parameter in parameters)
{
    parameter.GetCustomAttribute<CustomAttr>()?.ShouldNotBeNull();
}

我知道我可以使用严格的

delegate
声明并且它有效。

但我的问题是是否有人有任何反射黑客可以让我获得这些自定义属性。

c# reflection custom-attributes
1个回答
1
投票

可以通过

Delegate.Method
属性访问该方法。

var parameters = simpleAction.Method.GetParameters();
© www.soinside.com 2019 - 2024. All rights reserved.