c# - 从静态方法获取访问权限

标签 c# static-methods

今天早上我的大脑不工作了。我需要一些帮助来从静态方法访问一些成员。这是一个示例代码,我如何修改它以便 TestMethod() 可以访问 testInt

public class TestPage
{ 
    protected int testInt { get; set; }

    protected void BuildSomething
    {
      // Can access here
    }

    [ScriptMethod, WebMethod]
    public static void TestMethod()
    {
       // I am accessing this method from a PageMethod call on the clientside
       // No access here
    }  
}

最佳答案

testInt 声明为实例字段。如果不引用定义类的实例,static 方法就不可能访问实例字段。因此,要么将 testInt 声明为静态,要么更改 TestMethod 以接受 TestPage 的实例。所以

protected static int testInt { get; set; }

没关系

public static void TestMethod(TestPage testPage) {
    Console.WriteLine(testPage.testInt);
}

其中哪一个是正确的在很大程度上取决于您要建模的内容。如果 testInt 表示 TestPage 实例的状态,则使用后者。如果 testInt 是关于类型 TestPage 的东西,那么使用前者。

关于c# - 从静态方法获取访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2049884/

相关文章:

c# - 部分 URL 的 RegEx 模式(打开路径中的两个值)

c# - 隐藏静态方法可以吗?

java - 有一个静态方法在枚举中使用非静态成员

c# - 当 kind 为 Utc 时从日期时间 UTC 转换为 datetimeoffset 时出错

go - Go 中静态方法的等价性

java - 修改Builder模式,这是一个好的做法吗?

java - 如何让 Java 中的所有实例做某事

C# https 请求总是隧道到服务器,但 Java 只有一次

c# - RedirectToAction 不会更改 URL

c# - 调用具有未知签名的方法