Is there a way to use a string resource with a switch statement? After trying to obtain a string resource programmatically, an error is returned.
Error
'resourceLoader' is variable but is used like a type
C#
public class PageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();
Type page = null;
switch (value as string)
{
case resourceLoader.GetString("SteveJohnson/Text"):
page = typeof(FirstPage);
break;
case resourceLoader.GetString("PeteDavidson/Text"):
page = typeof(SecondPage);
break;
case resourceLoader.GetString("OneDrive/Text"):
page = typeof(FistPage);
break;
case resourceLoader.GetString("Twitter/Text"):
page = typeof(SecondPage);
break;
default:
break;
}
return page;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
Dictionary<string, Type>instead.fistPagetofirstPage?switchhave largely been invalidated by recent features added to C#, i.e. pattern-matching, which take away the blanket prohibition against non-constant expressions forcasestatements.casestatements are required to use only constant expressions.