gpt4 book ai didi

c# - 如何使用方法参数属性

转载 作者:可可西里 更新时间:2023-11-01 09:00:18 28 4
gpt4 key购买 nike

我一直在努力寻找如何编写自定义属性来验证方法参数的示例,即转换为以下形式:

public void DoSomething(Client client)
{
if (client.HasAction("do_something"))
{
// ...
}
else
{
throw new RequiredActionException(client, "do_something");
}
}

进入这个:

public void DoSomething([RequiredAction(Action="some_action")] Client client)
{
// ...
}

据我所知,我需要将此属性添加到我的自定义属性中,但我不知道如何访问装饰参数 Client:

[AttributeUsageAttribute(AttributeTargets.Parameter)]
public class RequireActionAttribute : System.Attribute
{
public Type Action {get; set;}

public RequireActionAttribute()
{
// .. How do you access the decorated parameter?
Client client = ???

if (!client.HasAction(Action))
{
throw new RequiredActionException(client, Action);
}
}
}

最佳答案

您正在正确应用它 - 但属性基本上不知道它所指的成员。这无疑让生活变得更加艰难。

它不仅不能访问它引用的成员,而且该成员将是 ParameterInfo,而不是 Client - 没有简单的访问方法外部参数的。您的方法需要调用一些帮助程序代码,传递 client 的值以便适本地处理它......或者您需要挂接到将调用您的方法的代码,为了注意属性。

目前还不清楚您希望如何使用它,但很可能您需要对设计进行重大更改。

关于c# - 如何使用方法参数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150365/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com