我是 xamarin/c# 新手,我正在嘗試使用 login 制作一個應用程式,我試圖在應用程式中傳遞登錄的用戶 ID,問題是,如何在登錄頁面后傳遞或使用戶 ID 保持浮動?我應該繼續使用 queryproperty 在每個頁面中傳遞它,還是有更好的方法來保留它,比如放置一個特定的檔案,以便每個頁面都可以呼叫它?
uj5u.com熱心網友回復:
您可以使用Application.Properties集合來存盤整個應用程式需要訪問的內容。
要存盤您將使用的用戶 ID
Application.Current.Properties("UserID") = UserID;
并檢索它你會使用
UserID = Application.Current.Properties("UserID");
uj5u.com熱心網友回復:
在C#它不是可以定義真正的全域變數(也就是說,他們不屬于任何類)。使用 astatic class是一個有效的替代選項,因此您可以創建如下內容:
public static class Globals
{
public Dictionary<int, UserObject> Users = new Dictionary<int, UserObject>();
}
現在,您將能夠訪問用戶的字典屬性并添加/洗掉/修改登錄用戶
遵循 Hans Ke?ing 的評論,請注意 Xamarin 應用程式同時為單個用戶提供服務,因此您可以將上述內容從 a 重構dictionary為UserObject
uj5u.com熱心網友回復:
靜態類 - 包含資訊的糟糕做法。您可以使用IoC-container. 我不知道 xamarin,如果你有startup-class(如何 WPF),你可以制作 ioc-container:
安裝 Autofac
Install-Package Autofac -Version 5.0.0Rigster 用戶內容:
class StartupClass
{
public static IContainer Container { get; set; }
public void OnStartup()
{
var containerBuilder = new ContainerBuilder();
var userContent = smthMethodForGiveUserContent();
containerBuilder.RegisterInstance<User>(userContent); //register UserType!
Container = containerBuilder.Build();
}
}
- 決議用戶內容:
class SmthClass
{
public void Method()
{
using(var scope = StartupClass.Container.BeginLifetimeScope())
{
var userContent = scope.Resolve<User>(); //IT'S YOUR OBJECT, USE!!
//smth code..
}
}
}
uj5u.com熱心網友回復:
最快的方法是在 中定義一個變數App,它可以被整個專案訪問。
因為App本身已經在Applicationclass里面定義了,而且是一個static屬性。
public partial class App : Xamarin.Forms.Application
{
public string UserID;
}
// set or get
(App.Current as App).UserID
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/396913.html
