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)
その他...誰でも巧妙なアイデアはありますか?いくつかの工夫の後