0
我正在編寫使用C#和MonoTouch的網絡服務的客戶端應用程序。它有一些用戶會話(註冊,登錄,註銷),消息(列表,寫入,刪除等),圖像例程(上傳,下載)等命令。更好的客戶端的網絡服務
我寫的實施給用戶會話請求類型,它可以異步執行,這樣的:
{
public delegate void LoginEventHandler(Session session);
public delegate void ErrorEventHandler(Error error);
public delegate void StatusEventHandler(string status);
public interface IDataProvider
{
#region Session
Session GetSession();
event LoginEventHandler OnRegistered;
event ErrorEventHandler OnRegisteredError;
void Register(Person user);
event LoginEventHandler OnLoggedIn;
event ErrorEventHandler OnLoggedInError;
void Login(Person user);
event StatusEventHandler OnLoggedOut;
event ErrorEventHandler OnLoggedOutError;
void Logout(Session session);
#endregion
}
}
}
它的工作原理,但即使是現在它是一個有點沉悶,弱實現2個事件處理程序稍後取消訂閱任何請求:
dataProvider = new DataProviderService();
...
appDelegate.dataProvider.OnRegistered += HandleOnRegistered;
appDelegate.dataProvider.OnRegisteredError += HandleOnRegisteredError;
appDelegate.dataProvider.Register(GetPerson());
...
void HandleOnRegistered (Session session)
{
InvokeOnMainThread(delegate {
appDelegate.settings.Session = session;
appDelegate.dataProvider.OnRegistered -= HandleOnRegistered;
appDelegate.dataProvider.OnRegisteredError -= HandleOnRegisteredError;
Waiter.HideWaiter();
Console.WriteLine(session.userId);
}
);
}
void HandleOnRegisteredError (Error error)
{
InvokeOnMainThread(delegate {
appDelegate.dataProvider.OnRegistered -= HandleOnRegistered;
appDelegate.dataProvider.OnRegisteredError -= HandleOnRegisteredError;
Console.WriteLine(error);
});
}
任何有關改進體系結構以進一步開發的建議嗎?或者有什麼材料可以看出古茹通常如何做?
如果我理解你是正確的,通常你使用的是相同的東西,但額外檢查雙重簽名事件處理程序。 – 2012-07-16 10:41:12
如果你的控制器真的是單身人士,那麼檢查你是否訂閱了兩次事件是沒有用的。 – jonathanpeppers 2012-07-18 21:48:38