2016-07-29 11 views
-3

私は簡単な質問があります。私は別のクラスの別のメソッドに渡そうとしているオブジェクトを持っています。異なるメソッドにオブジェクトを渡すC#

public virtual void Geocode(ICustomer customer) 
    { 
     RouteObjects.Customer roCustomer = customer as RouteObjects.Customer; 

     if (customer != null) 
     { 
      RouteObjectsRepository.Geocode(roCustomer); 
      GeoCodeUpdateEventPublisher.UpdateGeoCustomer(roCustomer); 
     } 
    } 

私は、メソッドupdategeocustomerのGeoCodueUpdateEventPublisherにroCustomerオブジェクトを渡そうとしています。私のupdateGeoCustomerは次のようになります

public virtual void UpdateGeoCustomer(object roCustomer) 
    { 
     Publish(roCustomer); 
    } 

これがこのオブジェクトを渡す適切な方法であるかどうか知りたかったですか?メソッドを公開すると、次のようになります。私はちょうど私の周り正しく「オブジェクト」というよりも、それがあることをタイプまたはそのICustomerとしてそれを周りに渡すと、本質的に「間違っている」何もない

+2

「正しく渡す」とはどういう意味ですか?あなたのコードは動作しますか?何かが正しいかどうかを発見するための主な手段です。 – Jamiec

+1

コードは問題ありません。 「正確さ」はあなたの意図によって決まります。つまり、パブリッシュでICustomerインターフェイスを実装するオブジェクトまたは実際にオブジェクトを受け入れるようにしますか?もしそうなら、インタフェースを保持する必要があります。 –

答えて

0

このオブジェクトを渡していますかどうかを確認しようとしています

protected virtual void Publish(object roCustomer) 
    { 

      PublishMessage publishMessage = CreatePublishMessage(roCustomer); 

      if (publishMessage != null) 
      { 
       Subscribers.AsParallel().ForAll(s => s.Send(publishMessage)); 
      } 

    } 

それは本当に特定のユースケースとコーディングスタイルに依存します。あなたがそれのプロパティにアクセスする必要があり、それをオブジェクトとして渡す必要があるならば、それをキャストする必要があります。そして、それは物事について行くための不必要かつ悪い方法です(つまり、それをオブジェクトに渡すとメソッドを更新してから(MyObjectType)obj.Whatever = "Something";そしてあなたは疑わしいことをしています)。

+0

プログラムがGeoCodeの処理をした後に、私がしたいことは、そのroCustomerオブジェクトを取得してそれを私のアップデートに渡してメッセージキューをキックオフして、 。私は客観的な顧客の追跡番号x、y、cooridinatesから特定のものを欲しいだけです。そういうもの。 –

+0

その説明から、メッセージキューに送信されるポイントまで実際にアップしているタイプとして渡す必要があります。このポイントでは、追跡対象のオブジェクトから値を送信する必要があります。 – Yushatak

+0

RouteObjects.Customerはクラスなので、私はroCustomerを実行するキューにオブジェクト内のアイテムを入れるメソッドに到達すると、これを正しく前後に渡しています。オブジェクト内のアイテムにアクセスすることはできません。申し訳ありませんが、私は正しく理解していないかもしれません。 –

0

これを行う正しい方法は、正しいタイプを使用して受信関数を宣言することです。関数がANYタイプのパラメータで動作する必要がある場合を除きます。

+0

それを置くのが良い方法 - 基本的には「正しい」と言い換えて、できるだけ具体的にしたいだけです。関数がより一般的な何かを扱うことを意図しているならば、より一般的です。 – Yushatak

関連する問題