C#-在访问方法之前检查条件

C#-在访问方法之前检查条件,c#,methods,attributes,conditional-statements,C#,Methods,Attributes,Conditional Statements,在访问方法之前检查条件的最佳实现是什么 不是在每个方法的顶部使用If语句,也不是在每个方法中使用异常处理,我从属性中了解到,它们可以在访问方法之前用特定的操作标记方法,我在asp.net和一些java web框架中看到了这一点,例如,与身份验证类似,在访问此方法之前,我可以在方法顶部创建注释或属性,以检查此用户是否获得授权 现在,我可以在访问方法之前编写自己的自定义属性来检查internet连接吗 我不是要一些代码,我只是想确认我走的是正确的道路 如果没有进一步的说明,我无法确切地说出您想要做什

在访问方法之前检查条件的最佳实现是什么

不是在每个方法的顶部使用If语句,也不是在每个方法中使用异常处理,我从属性中了解到,它们可以在访问方法之前用特定的操作标记方法,我在asp.net和一些java web框架中看到了这一点,例如,与身份验证类似,在访问此方法之前,我可以在方法顶部创建注释或属性,以检查此用户是否获得授权

现在,我可以在访问方法之前编写自己的自定义属性来检查internet连接吗


我不是要一些代码,我只是想确认我走的是正确的道路

如果没有进一步的说明,我无法确切地说出您想要做什么,但是有一种流行的方法可以在执行代码之前检查条件,它不需要使用attributes/large nested
if
s。它被称为保护条款。它在构造函数注入中非常流行,但是有很多很好的用例

下面是一个方法示例,该方法使用一个guard子句来验证有效的
InternetConnection
是否已传递给该方法:

public void DoSomethingWithInternetConnection(InternetConnection internetConnection)
{
    // Guard clause
    if(internetConnection == null)
    {
        throw new ArgumentNullException();
    }

    // Execute code that requires a valid internet connection
    internetConnection.DoSomething();
}

您应该能够看到如何扩展此功能以检查其他场景,或者在其他地方使用它。

您可能没有走上正确的道路。对这个问题没有更精确的解释很难说。但是运行时自动处理的属性很少,通常您自己无法创建一个,至少在没有代码注入库帮助的情况下是这样。IMHO,你最好还是用“老式的方式”来做这类事情,除非这是更大需求的一部分,使用这样的代码注入库是有意义的。MVC中的函数属性对于控制器入口点很方便。它为一个向世界开放的函数增加了一点额外的安全性,这就是为什么我认为条件是以这种方式检查的。对于内部逻辑流,我认为更经典的逻辑分支更具可读性。请看这个链接,这是一个示例,说明我想做什么好的,我想做的是,我的大多数应用程序都在调用web API,我不想在每个调用此api的方法中添加异常处理或if语句,以避免在没有internet连接的情况下应用程序崩溃,我正试图以最少的代码和高效的方式来完成这项工作fashion@user2469133:在这种情况下,您可以简单地在更高级别处理该异常(引用Web API的方法的调用方)。让异常冒泡并适当地处理它。