2016-11-11 5 views
1

SQL Serverにデータベーステーブルがあり、このテーブルの一部のデータを使用するように.NETアプリケーションを構成する必要があります。このデータはSOAP API呼び出しで使用されます。文字列をオブジェクトのプロパティに解決する

たとえば、表は、これらの列

姓を持っています|姓EmailAddressの

これらの列の値は、APIの呼び出しで特定のフィールドにマップする必要があります。この設定は柔軟でなければならないので、たとえば、FirstNameをapiobject.firstnameに割り当てることはできません。

文字列をオブジェクトのプロパティに派生させる方法はありますか?

たとえば、姓のために、object.Firstname =値にそれを解決することが可能であるが、この

if(column == "FirstName") 
{ 
    ApiObject.FirstName = columnValue 
} 

ようにそれをやっていないことはむしろ私は

ApiObject.[somehow-resolve-which-field] = columnValue 
ような何かをしたいと思います

誰も私が何を知っていますか?

+1

これは –

答えて

2

あなたは、このクラスの表記法を持っていないと、あなたは、単に必要なプロパティを持つオブジェクトを作成する場合 - 正しい方法は、それが他の回答で述べたように、dynamicを使用することです。

すでに例えば、クラスを持っている場合:

public class MyClass 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string EmailAddress { get; set; } 
} 

あなたは、次のようreflectionであなたがやりたいことができます。

columncolumnValueはあなたの例からです
var myObject = new MyClass(); 
var prop = myObject.GetType().GetProperty(column); 
prop.SetValue(myObject, columnValue); 

columnstringタイプで、columnValueはプロパティのタイプと一致する必要があります。

0

私が正しく理解していれば、いくつのプロパティがあるのか​​、これらのプロパティは何かを知らないオブジェクトが必要なことを正しく理解していれば、このような場合は、にdynamicというキーワードがあります。あなたは、あなたは、次のように、このオブジェクトのプロパティを設定することができ、あなたの​​

dynamicとして
dynamic ApiObject = new ExpandoObject(); 

を初期化することができます

ApiObject.YourProperty=columnValue; 

詳細:About ExpandoObject

UPDATE
を知りたい場合はどの列であるかは、のColumnNameSystem.Data namespa ce。 c#にテーブルの列を得るためのいくつかの問題があります。そのうちの一つは、次のとおりです。 How do I get column names to print in this C# program?

+0

のために 'dynamic'プロパティを使用できますが、私の問題はどのプロパティを設定するのかを知ることです。 – andrewb

+0

@andrewb、私は私の答えを更新しました。これをチェックしてください –

関連する問題