我試圖實現以下目標:創建全局對象?
當用戶已經成功通過驗證,我需要創造,我可以從不同的形式(或類)訪問全球用戶對象。
我正在查看VS中可用的數據源,並看到有一個「對象」選項可能適合我想實現的目標。麻煩在於,我不知道它是如何工作的。
任何人都可以指向正確的方向嗎?
謝謝。
我試圖實現以下目標:創建全局對象?
當用戶已經成功通過驗證,我需要創造,我可以從不同的形式(或類)訪問全球用戶對象。
我正在查看VS中可用的數據源,並看到有一個「對象」選項可能適合我想實現的目標。麻煩在於,我不知道它是如何工作的。
任何人都可以指向正確的方向嗎?
謝謝。
您可以使用或創建一個公共列表,確保您只在驗證過的用戶身上添加已驗證的用戶,甚至可以通過封裝字段訪問來創建列表或字符串[]屬性。問你可能會想創建一個類級別的屬性。
它被稱爲Singleton,它是一件壞事(特別是當它的狀態可能發生變化時)。調查Dependency Injection(DI)。它甚至有一個.NET-specific book。
根據要求,這裏有一個簡單的(可能是過度簡化的)手動做DI的例子。 A DI Container library(也稱爲控制反轉或IoC容器庫)可以簡化組合根中「將所有東西接線」的過程,並且通常還提供了生命週期管理和其他功能。
// Composition root of your application
void Main()
{
// Only instance of user we will ever create
var user = new User();
var instance = new MyClass(user);
}
public interface IUser
{
string Name { get; set; }
}
public class User: IUser
{
public string Name { get; set; }
}
public class MyClass
{
public MyClass(IUser user)
{
if (user == null)
{
throw new ArgumentNullException("user");
}
_user = user;
}
private readonly IUser _user;
}
+1依賴注入。作爲一個基本步驟,可能需要增加一個簡單的例子,作爲一個基本的步驟,通過IoC容器引用自動DI作爲高級替代方法。 – 2011-12-19 07:27:06
假設這是一個Windows窗體應用程序,您可以創建存儲在一個靜態ApplicationState類用戶類。
步驟:
1)創建您的用戶類來保存有關用戶的信息:
public class User
{
public string Login { get; set; }
//.. other properties
}
2)創建ApplicationState類:
public static class ApplicationState
{
public static User CurrentUser { get; set; }
}
3)在您的登錄過程,創建用戶類的新版本並將其分配給ApplicationState.CurrentUser屬性:
public void CompleteLogin(string sLogin)
{
User user = new User();
user.Login = sLogin;
ApplicationState.CurrentUser = user;
}
4)您現在可以在項目的任何地方使用ApplicationState.CurrentUser
。
這些「表單或類」對這個「用戶對象」要求什麼信息? – 2011-12-18 23:52:24
只是讀取(並可能修改)它的屬性的能力。通過屬性。 – Nick 2011-12-18 23:56:58