2010-11-23 28 views
2

私はC#で少し新しく、このスクリプトを使用してmssqlデータベースからレコードを取得しました。そこで、キーをオブジェクトに変換します。オブジェクトから属性を取得する

その:

Object obj = result[i]; 

私は、オブジェクトの内部にあるデータを参照してください宣言の後の行にブレークポイントを有効にします。今私はデータを持つ属性にアクセスする必要がありますが、私はC#の少し新しいので、私はそれを行う方法を知らない。

属性が呼び出されるとします:名前 私は自分の新しいクラスを属性名と共に作成しました。

私は私のオブジェクトにキーの名前を取得しよう:IDEはすでにOBJイマイチ内の属性が利用できるというエラーになります

myObject.Name = (string) obj.Name; 

オブジェクトの名前属性にアクセスして、それを自分のオブジェクトに取得するにはどうすればよいですか?

ありがとうございます!

+0

result [i]には正確に何が含まれていますか?データベースからレコードをロードしたとしますが、どのフォーマットでレコードが返されますか? –

+2

C#の用語では、.Nameは属性であり属性ではありません。属性はC#で他の意味を持っています – Shuo

答えて

1

したがってresult[i]はクラスのインスタンスです(便宜上Fooと呼ぶ)。そして、あなたはresult[i]に存在するどのようなデータ

Foo obj = result[i]; 
myObject.Name = obj.Name; 

または

Object obj = result[i]; 
myObject.Name = ((Foo)obj).Name; 
0

オブジェクトを適切なタイプにキャストする必要があります。例えば。あなたのオブジェクトがある場合:

class MyObject 
{ 
    public string Name { get; set; } 
} 

あなたのようにそれをキャストする必要がありますよりも:

MyObject obj = (MyObject)result[i]; 
0

あなたはObjectクラスの属性にアクセスしようとしている、そしてそれには属性がありません。

:データベースの読み取りがあなたのクラスのインスタンスに直接それを読んで、あなたが作成したクラス、 Name属性を持つ1、または(より簡単に)、のようなものに castあなた objにあなたのいずれかいます

MyClass obj = result[i]

0

を言うことができますか?それはデータベース内のレコードのフィールドからの単なる文字列ですか? (すなわち、resultDataRowですか?)それは、それをあまり知らないObjectの中に置きます。基本的に、あなたはそれを「ボクシング」し、オブジェクトのデータの知識をコンパイラから取り除いています。

myObject.Name = System.Convert.ToString(result[i]); 

は今、これはかなりここで作られている他の考慮事項があることで初心者さ:result[i]は単なる文字列である場合

、のようなものを試してみてください。 result[i]がこれまでにnullだった場合、例外がスローされます。しかし、学習中は、探しているデータを取得する必要があります。

関連する問題