用于验证方法参数的c#属性
我有一个windows服务,我正在向每个根据数据库验证的服务调用传递一个用户ID。现在我必须在每个方法内部调用该验证方法。我试图创建一个c#属性,可以为每个方法添加前缀,并让它为我进行验证,但我不确定如何从属性中读取methods userId参数 这就是我所拥有的:用于验证方法参数的c#属性,c#,attributes,C#,Attributes,我有一个windows服务,我正在向每个根据数据库验证的服务调用传递一个用户ID。现在我必须在每个方法内部调用该验证方法。我试图创建一个c#属性,可以为每个方法添加前缀,并让它为我进行验证,但我不确定如何从属性中读取methods userId参数 这就是我所拥有的: public int GetANumber(Guid userId){ ValidateUserId(userId); return 1; } 这就是我想要的: [ValidateUserId] public int Ge
public int GetANumber(Guid userId){
ValidateUserId(userId);
return 1;
}
这就是我想要的:
[ValidateUserId]
public int GetANumber(Guid userId){
return 1;
}
到目前为止,我的属性是:
[AttributeUsage(AttributeTargets.Method)]
public sealed class ValidateUserId : Attribute
{
public ValidateUserId()
{
//need to get userId from method here and check against db
}
}
有什么想法吗?这不是一个问题,属性是用来解决的。进行方法调用。属性值必须在编译时已知。您可能可以通过某种IL编织来实现。也许可以看看PostSharp。。。。除此之外,你还得做一些深刻的反思。使用该实现,您必须在每个方法的开头调用某种
PerformValidation
方法。即使这样,我也不确定如何使用实际值。但真的,不要。只需调用您的方法。方法不应该像这样被验证弄得乱七八糟。如果需要进行某种验证,请将用户放在线程静态存储(或可访问的地方)上,不要将其传递给每个方法。