如何在静态方法中使用本地化字符串

时间:2014-06-03 11:34:26

标签: c# windows-runtime windows-phone-8.1

我必须将翻译过的字符串用于静态方法,但它不允许我使用关键字“this”。

我的代码如下:

public static async Task<string> UtilityMethod(){

[...]

this.resourceLoader.GetString("LocalizedString")

[...]

}

我该怎么办?

2 个答案:

答案 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