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]
    }

プロジェクトに複数のレイヤーがあり、ベースレイヤーを第2レベルレイヤーに参照させたくないので、これが必要ですか? どうすればこれを達成できますか?

4

3 に答える 3

5

A の静的プロパティを保護されたものとして宣言し、任意の静的プロパティにアクセスする場合と同じように、任意の派生クラスからアクセスすることができます。

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();
    }
}
于 2013-05-22T12:03:15.750 に答える
1

アクセス修飾子がない場合、変数はprivateです。トークン変数をパブリックにすると、次のようにアクセスできます。

public class A
{
    public static string token;
}

// ...

public class Main : B
{
    public Main()
    {
        string token = A.token;
    }
}
于 2013-05-22T12:05:09.267 に答える
1

まず、tokenファイル (またはプロパティ) を公開または保護する必要があります。現在は非公開になっています。次に、次のようにします。

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

静的フィールドにアクセスするためにクラスのインスタンスは必要ありません。

于 2013-05-22T12:06:13.627 に答える