我有多个图层,其中我有一个字段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]
}
我需要这个,因为我的项目中有多个图层,我不想将基础图层引用到我的第二层图层?我怎样才能做到这一点?
答案 0 :(得分:5)
您可以将A中的静态属性声明为protected,只需从任何派生类访问它,就像访问任何静态属性一样:
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();
}
}
答案 1 :(得分:1)
如果没有访问修饰符,您的变量是私有。 如果您的令牌变量 public ,那么您可以像这样访问它:
public class A
{
public static string token;
}
// ...
public class Main : B
{
public Main()
{
string token = A.token;
}
}
答案 2 :(得分:1)
首先,您需要将您的token
提交(或属性)公开或受保护,现在它是私有的。然后简单地做:
public class Main : B // Second level layer
{
// ...
Console.WriteLine(B.token);
// ...
}
您不需要类的实例来访问其静态字段。