2017-02-26 6 views
-1

すぐに私の多分簡単な問題に行きましょう。2つのクラスの参照オブジェクトC#

LoginServiceクラスは、サーバに接続するServicesフォルダにあります。私は別の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上のユーザアバターを取得したい:

​​

しかし、それはありませんしようとしますがありますので、それは常に例外を与えます接続。 UserModelをロードするには、正常な接続でなければならないので、Connectedと確信しています。

アイデア?

+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(); 
     } 

静的(私はサービスレベルには好ましくない)に行きたい場合は、この目的のように静的を使用しないでください。 まず、依存性注入の概念をチェックする必要があります。私は統一と構造体のコンテナをお勧めします。オブジェクトのnull refなしで、クラスによってサービスを使用することができます。例外。依存性注入は結合およびヌル参照例外で減少します。

0

Ehmmm、これを参照として使用できる人は、上記のコードはうまくいきます。

問題は接続APIがすぐに状態を返さないことが原因でした。 2秒の遅れが私の問題を解決しました。皆さん、ありがとうございました。

関連する問題