2010-11-23 2 views
2

Я немного новичок в C#, и я получил этот скрипт, который получает запись из базы данных mssql. Там он преобразует ключ в объект.C# получить атрибуты из объекта

Его:

Object obj = result[i]; 

Когда я включаю контрольную точку на линии после объявления я вижу данные, которые внутри объекта. Теперь мне нужно получить доступ к атрибуту с данными, но поскольку я немного новичок в C#, я не знаю, как это сделать.

Допустим, что этот атрибут называется: name Я создал новый класс и собственный атрибут с именем атрибута.

Когда я пытаюсь получить имя ключа к моему объекту с:

myObject.Name = (string) obj.Name; 

В среде IDE уже выдает ошибку, что атрибут в OBJ разве доступны.

Как получить доступ к атрибуту имени объекта, чтобы получить его на свой собственный объект?

Спасибо!

+0

В чем состоит результат [i]?Вы говорите, что вы загрузили запись из базы данных, но в каком формате она возвращается? – 2010-11-23 15:24:20

ответ

1

Таким образом, result[i] является экземпляром вашего класса (который я буду называть Foo для удобства)? Тогда вы можете сказать

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 класса, и он не имеет атрибутов. Вы должны либо cast ваш obj к классу, который вы создали, тот, который имеет атрибут Name, или (более просто), при чтении базы данных для чтения непосредственно в экземпляр вашего класса, что-то вроде:

MyClass obj = result[i]

0

Какие данные присутствуют в result[i]? Это просто строка из поля в записи в базе данных? (То есть, result a DataRow?) В его нынешнем виде вы помещаете его только в Object, который мало что знает об этом. В принципе, вы «боксируете» его и удаляете знание данных объекта из компилятора.

Если result[i] это просто строка, попробовать что-то вроде:

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

Теперь, это справедливо для начинающих в том, что есть и другие соображения, которые будут сделаны здесь. Если result[i] всегда null, тогда это вызовет исключение и т. Д. Но пока вы изучаете, это должно получить нужные вам данные.

Смежные вопросы