我必须将翻译过的字符串用于静态方法,但它不允许我使用关键字“this”。
我的代码如下:
public static async Task<string> UtilityMethod(){
[...]
this.resourceLoader.GetString("LocalizedString")
[...]
}
我该怎么办?
答案 0 :(得分:1)
嗯,你不能在静态方法中使用非静态属性(或字段)。
作为一种解决方法,您可以使resourceLoader也是静态的,或修改UtilityMethod以获得参数,以便为您提供代码:
private static readonly ResourceLoader resourceLoader = ResourceLoader.GetForCurrentView("Resources");
或者:
public static async Task<string> UtilityMethod(ResourceLoader resourceLoader){
[...]
resourceLoader.GetString("LocalizedString")
[...]
}
答案 1 :(得分:0)
首先,此关键字不允许在静态方法中使用 背后的原因是当您使用静态方法时,该方法对于类创建的实例是可见的。
public class DemoClass
{
public int value1 {get;set;}
public int value2 {get;set;}
//if you see the below I am using this
public void method1()
{
Console.Write(string.Format("value1: {0} value2: {1}", this.value1, this.value1));
}
public static void method2()
{
//I callnot access my properties it self :(
//and cannot be accesed
}
对字符串类使用扩展方法或通过覆盖toString()方法来翻译字符串
扩展方法http://msdn.microsoft.com/en-us//library/bb383977.aspx
覆盖ToString http://msdn.microsoft.com/en-IN/library/ms173154(v=vs.80).aspx