2013-05-22 52 views
0

我有多個層,其中我有字段UserToken,我需要通過會話。我正在打WCF服務,並且每次請求都會在頭中傳遞一個UserToken。而不是每次我在我的基類中設置UserToken時傳遞此標頭,以便我從該靜態字段獲取標記。我正在構建WPF應用程序。我可以使用派生類的對象訪問基類的靜態屬性嗎?

public class A // Base layer 
    { 
     static string token; 
    } 
    public class B : A // First Level layer 
    { 

    } 

    public Class Main : B // Second level layer 
    { 
     //Here i want to do something like ... 
     new B().[get base class of it i.e. A and then access static property of A] 
    } 

我需要這個,因爲我有我的項目中的多個圖層,我不想參考基礎層到我的第二級圖層?我怎樣才能做到這一點?

+1

讓你的靜態字符串公共 – cvraman

+1

他媽的我怎麼忘了公開:( –

回答

5

你可以在一個聲明靜態屬性作爲保護,任何派生類,它只是訪問,你會訪問任何靜態屬性:

public class A // Base layer 
{ 
    protected static string token = "base class token"; 
} 
public class B : A // First Level layer 
{ 

} 

public class Main : B // Second level layer 
{ 
    public string GetFromBase() 
    { 
     return A.token; 
    } 
} 

只是一個快速的控制檯例如:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(new Main().GetFromBase()); 
     Console.ReadKey(); 
    } 
} 
+0

媽,你快:) –

+1

1+,我會表現出同樣的事情:)搞好 –

+0

和去前右午餐:) –

1

沒有訪問修飾符,您的變量是私人。 如果你讓你的令牌變量公共那麼你可以像這樣訪問:

public class A 
{ 
    public static string token; 
} 

// ... 

public class Main : B 
{ 
    public Main() 
    { 
     string token = A.token; 
    } 
} 
1

首先,你需要讓你的token申請(或財產)公共或受保護的,現在是私人的。然後簡單地做:

public class Main : B // Second level layer 
{ 
    // ... 
    Console.WriteLine(B.token); 
    // ... 
} 

你不需要一個類的實例來訪問它的靜態字段。

相關問題