2017-02-26 49 views
-1

讓我們直接看看我可能相當簡單的問題。兩個類中的引用對象C#

我在我的Services文件夾中有一個LoginService類,它與服務器建立連接。我有另一個UserModel我想從服務器接收信息。爲了不再次登錄(這將是愚蠢的),我需要在具有相同值的兩個文件中維護client引用。換句話說,我需要能夠從不同的類訪問同一個對象(做另一個參考)。

我已經嘗試過,並嘗試過,但我失去了一些東西。 一個相當類似的帖子,我發現仍然沒有解決我的是this

的代碼在我LoginService

namespace App_Name.Services 
{ 
    class LoginService 
    { 
     public static Class_Name client; 

     public async Task MakeConnectionAsync(string userToken) 
     { 
      client = new Class_Name(); 

      PasswordVault vault = new PasswordVault(); 

      await client.LoginAsync(TokenType.User, userToken); 

      await client.StartAsync(); 
     } 

所以現在我想獲得用戶的頭像我UserModel.cs

​​

但因爲它嘗試,但沒有它總是給一個異常連接。 我相信它是Connected,因爲要加載UserModel它必須是成功的連接。

任何想法?

+0

idk如果這對你有用,但你有沒有嘗試過使用依賴注入和接口?它可以解決您的問題,創建一個包含您的登錄方法的接口,然後在程序中的任何位置注入此接口方法 – hdrdiab

回答

0

當你直接調用client.CurrentUser.GetAvatarUrl()方法時,它不是由LoginService類決定的。您應該在使用之前創建Login類。此外,您在LoginService類中使用異步任務,您必須確認已通過UserModel類創建用戶。

爲了獲得最佳實踐,您可以使用您的構造函數創建實例。

static class LoginService 
    { 
     public static Class_Name client; 
     static LoginService() 
     { 
     client = new Class_Name(); 
     } 

如果您想要使用靜態(我不喜歡服務級別),請不要使用靜態用於此目的的用法。首先你應該檢查依賴注入的概念;我建議unity和structuremap容器。您可以通過您的類創建消費服務,而不需要任何對象null參考。例外。耦合和空引用異常的依賴注入減少。

0

Ehmmm,對於任何人都可以使用這個作爲參考,我上面的代碼就好了。

問題是連接API沒有立即返回狀態。 2秒的延遲解決了我的問題。謝謝大家的幫助。