2017-06-23 36 views
1

我想在Xamarin Forms中使用以下內容來設置登錄頁面是否在調試模式下或不在功能切換中。簡單功能在xamarin格式切換 - 錯誤轉換字符串到頁面

我在.resx資源文件中存儲了我希望作爲字符串的2個頁面名稱,但出現錯誤,因爲它無法從返回到xamarin.forms頁面的字符串轉換。

即使我將靜態字符串更改爲static xamarin.forms.page,它仍然會錯誤,因爲resx返回一個字符串。

有沒有辦法繞過這個,所以我可以使用它?

public static string StartUpPage 
     { 
      get 
      { 
#if DEBUG 
       return Resources.Redirects.SwipeFeatureOff; 
#else 
       return Resources.Redirects.SwipeFeatureOn; 
#endif 
      } 
     } 

用法:

var _page = Agronomy.Config.AppConfig.StartUpPage; 
NavigationPage page = new NavigationPage(_page); 

回答

1

通過Type.GetType獲得您的字符串類型後通過Activator.CreateInstance創建一個實例:

// fully qualify your string (namespace . classname) 
var _pageString = Agronomy.Config.AppConfig.StartUpPage; 
var page = (Page)Activator.CreateInstance(Type.GetType(_pageString)); 
+0

感謝您的快速回復,和你說的話是有道理的,雖然我在代碼的第二行得到'value can not null'錯誤,但我假設我的resx中的字符串必須包含「.xaml」? – DarkW1nter

+0

@ DarkW1nter您的「字符串」需要完全限定(namespaceName +「。」+ className)或者使用'Activator.CreateInstance(namespace,classname)',您仍然需要命名空間,但在這種情況下,您可以硬編碼命名空間和保留類資源名稱在您的資源.... – SushiHangover

+0

在資源中使用命名空間+ className - 現在在同一行上獲得'指定的強制轉換無效'(請欣賞此處的幫助) – DarkW1nter