2017-06-20 6 views
0

私はデスクトップソフトウェアとクライアントのAPIの間にC#でインタフェースを構築しています。このAPIには多くのエンドポイントがありますが、それらはすべて非常に似たようなことを行います。私はオブジェクトを与えられたコードを書くことが任されています。私は各エンドポイントのためのメソッドを書くことができますが、DRYnessのために、私はそれに渡す可能性のあるオブジェクトのいずれかを取るメソッドを書く方法を理解しようとしており、それを使って正しいPOSTリクエストを作成します。汎用クラスのプロパティをマップするにはどうすればよいですか?

Accept User object 
Pass to POST method 
public POST method (T Resource) 
{ 
    Get Resource name 
    Get Resource properties 
    foreach (Property in Resource) 
    { 
     Add Property name and value to request parameters 
    } 
    return configured request 
} 
PROFIT 

私が作ってみた実際のコードは、これは(これは安っぽいかもしれない)である:ここではいくつかの擬似コードだ

public class POST 
{ 
    public IRestResponse Create<T>(RestClient Client, T Resource, string Path) 
    { 
     IRestResponse Resp = null; 
     RestRequest Req = Configuration.ConfigurePostRequest(Path); 
     string ResourceName = Resource.GetType().GetProperties()[0].ReflectedType.Name; (this actually gives me what I need) 
     string PropertyName = ""; 
     foreach (object property in Resource.GetType().GetProperties()) 
     { 
      PropertyName = property.GetType().GetProperty("Name").ToString(); 
      Req.AddParameter(String.Format("{0}[{1}]", ResourceName.ToLower(), PropertyName.ToLower()), Resource.GetType().GetProperty(PropertyName).GetValue(PropertyName)); 
     } 
     return Resp; 
    } 
} 

これはgobbledegookであれば、私は明確にすることができますが、各パラメータがすべき次のようになります。

Req.AddParameter("user[name]", user.name) 

その他...誰でも巧妙なアイデアはありますか?いくつかの工夫の後

答えて

0

は、ここで私はそれが何をしたいのかないのコードは次のとおりです。

関連する問題