C# 如何使用Win Store应用程序和WP8应用程序中的相同代码加载字符串资源?
我有一个Windows Phone 8应用程序,我现在正在将其移植到Windows应用商店。大部分WP8代码可以在Windows应用商店应用程序中使用,无需任何更改。但是,使用资源字符串时存在问题 在WP8项目中,字符串存储在.resx文件中,可以通过通用类AppResources在代码中使用:C# 如何使用Win Store应用程序和WP8应用程序中的相同代码加载字符串资源?,c#,windows-phone-8,localization,windows-store-apps,windows-store,C#,Windows Phone 8,Localization,Windows Store Apps,Windows Store,我有一个Windows Phone 8应用程序,我现在正在将其移植到Windows应用商店。大部分WP8代码可以在Windows应用商店应用程序中使用,无需任何更改。但是,使用资源字符串时存在问题 在WP8项目中,字符串存储在.resx文件中,可以通过通用类AppResources在代码中使用: String msg = AppResources.MyMessageStringID; 在WinStore项目中,字符串存储在.resw文件中,可以通过ResourceLoader在代码中使用: p
String msg = AppResources.MyMessageStringID;
在WinStore项目中,字符串存储在.resw文件中,可以通过ResourceLoader在代码中使用:
public class StringLoader {
private static ResourceLoader resourceLoader = new ResourceLoader();
public static String Get(String stringName) {
return resourceLoader.GetString(stringName);
}
}
String msg = StringLoader.Get("MyMessageStringID");
我正在寻找一种方法,使用相同的代码在两个项目中加载字符串。我的第一种方法是使用编译器开关:
String msg = #if NETFX_CORE StringLoader.Get("MyMessageStringID"); #else AppResources.MyMessageStringID; #endif
问题:编译器开关不能内联使用。必须是这样的:
#if NETFX_CORE
String msg = StringLoader.Get("MyMessageStringID");
#else
String msg = AppResources.MyMessageStringID;
#endif
虽然对于这个简单的示例来说这是可能的,但它会在实际项目中创建大量冗余代码
当然,我也可以为Win Store创建AppResources类:
public class AppResources{
private static ResourceLoader resourceLoader = new ResourceLoader();
public static String MyMessageStringID {
get { return resourceLoader.GetString("MyMessageStringID "); }
}
}
这样的类是在WP8中自动创建的,据我所知,我必须为Windows应用商店应用程序手动创建它。由于项目中有几百个字符串,这将非常非常有用
在WP8和Windows应用商店中使用相同的代码进行本地化,有什么好的、简单的、干净的解决方案吗 正是这个问题解决了。 简而言之,创建可移植类库,将资源放在那里,并在两个应用程序中引用此项目,完成