簡體   English   中英

方法C#的擴展方法

[英]extension method for a method C#

有沒有辦法在方法上有擴展方法? 這方面的示例是將一些用戶對象作為參數的方法,如果該用戶可以在方法的最開始使用該方法,則需要進行安全檢查。 該方法可以使用擴展方法,例如“檢查此用戶是否可以使用我”並返回bool。

謝謝。

您可以使用面向方面編程(AOP)在代碼中實現跨平台安全檢查。

在.NET中,您可以選擇多個AOP框架,例如:

特別是PostSharp文檔有一些關於如何使用AOP實現安全性的很好的例子

您無法為使用C#的方法添加擴展方法。

但您可以使用面向方面編程(AOP)來執行您想要的操作,例如使用PostSharpSpring.NET

  • 使用PostSharp保護方法的示例

     public class BusinessDivision : BusinessObject { [SecuredOperation("Manager")] public void EnlistEmployee(Employee employee) { // Details omitted. } } 

我不太確定你在尋找什么,但這對我來說就像聲明性安全一樣。

請查看: http//msdn.microsoft.com/en-us/library/kaacwy28.aspx

我不確定我是否理解你的問題。 但是,這個怎么樣:

public static void EnsureUserHasAccess(this object obj)
{
    // check permissions, possibly depending on `obj`'s actual type
}

public static void DoSomething(this MyClass obj)
{
    // permissions check
    obj.EnsureUserHasAccess();

    // do something about `obj`
    …
}

public static void DoSomethingElse(this MyDifferentClass obj)
{
    // permissions check
    obj.EnsureUserHasAccess();

    // do something about `obj`
    …
}

擴展方法在C#中沒有的方法擴展(不知道我理解這意味着什么),但方法擴展對象/類。

如果要將您要描述的檢查類型注入代碼中,可以查看PostSharpAOP

您可以使用madgnome的答案,它基於方面編程(很高興看到有人在.net中使用過)或者您可以使用屬性並在每個應該保護的方法中粘貼一些代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM