2015-10-12 4 views
0

У меня есть объект, созданный из класса «object» и содержащий список, который я создал. Список представляет собой набор объектов, созданных из класса MyClass. И этот класс содержит два свойства строки.Объект, созданный из класса «объект», не позволяет извлекать значения свойств

public Class MyClass 
{ 
    private string _propOne; 
    public string PropOne 
    { 
     get {return _propOne;} 
     set {_propOne=Value;} 
    } 

    private string _propTwo; 
    public string PropTwo 
    { 
     get {return _propTwo;} 
     set {_propTwo=Value;} 
    } 
} 

У меня есть метод, который возвращает объект класса «объект»

private object GetData() 
{ 
    // It converts the list created to an object created from the class "object" 
} 

Тогда я вызываю метод, как в следующем.

object temp=GetData(); 

Теперь я хочу, чтобы перебрать «Темп» и назначить его в другой список, составленный из объектов класса «MyClass».

private List<MyClass> _anotherCollection; 
public List<MyClass> AnotherCollection 
{ 
    get {return _anotherCollection;} 
    set {_anotherCollection=Value;} 
} 

........................ 

foreach (var a in temp.GetType().GetProperties()) 
{ 
    object firstParam = "PropOne"; 
    object secondParam = "PropTwo"; 
    AnotherCollection.Add(new MyClass() { PropOne = a.GetValue(firstParam), PropTwo = a.GetValue(PropTwo) }); 
} 

Но это дает мне следующую ошибку компиляции.

Невозможно неявно преобразовать тип 'object' в 'string'. Явное преобразование существует (вы пропускаете литье?)

Может кто-нибудь помочь мне исправить это?

+0

'GetValue' ожидает строку в качестве параметра, вы пропускание' object'. Измените 'object firstParam =' на 'string firstParam' и то же самое на' secondParam'. –

ответ

2

Вы должны вернуть возвращенный объект от GetValue до string. Компилятор не знает, что object, возвращенный с GetValue, на самом деле является string, поэтому вы должны сказать, что так.

Кроме того, вы должны пройти в случае, вы пытаетесь получить значение (temp в данном случае):

PropOne = (string)a.GetValue(temp) 
+0

Теперь есть исключение: «Объект не соответствует целевому типу» –

+0

Использовал ли вы 'temp' также для второго вызова? –

+0

№. Единственное место, где я использую «темп», находится в цикле foreach. Это единственное место –

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