Как получить доступ к индексу Generic.List по отражению? - PullRequest
0 голосов
/ 05 декабря 2008

хорошо, у меня есть класс, и я передаю объект как свойство.

объект, который я передаю, является List<X>

в моем классе я пытаюсь получить доступ к индексу объектов с помощью отражения, НО Я НЕ МОГУ !!!

Пример:

этот класс работает, я только что записал ту часть, которую хочу показать, и мне нужна помощь.

class MyClass
{
    private object _recordSet;
    public object RecordSet
    {
        get { return _recordSet; }
        set { _recordSet = value; }
    }

    public string Draw()
    {
        system.reflection.Assembly asem = system.reflection.Assembly.getAssembly(_dataSource.GetType());

        object instance;

        instance = asem.CreateInstance(_dataSource.GetType().UnderlyingSystemType.FullName);

        //to access de Count of my List
        int recordcount = int.Parse(_dataSource.GetType().GetProperty("Count").GetValue(_dataSource,null));

        //i need to do a 
        for(int cont = 0; cont < recordCount; cont++)
        {
            _dataSource[cont].Name; // <-- THIS PART IS NOT WORKING!!! because i cant access the Index Directly.... WHAT TO DO!! ???
        }
    }
}

Ответы [ 2 ]

5 голосов
/ 05 декабря 2008

Если вы используете отражение (и, следовательно, много object), почему бы просто не использовать вместо него IList (неуниверсальный)?

т.е.

IList list = (IList)actualList;
object foo = list[17];

Также - для вашего исходного кода с Count вы не имеете в виду int.Parse - вам следует просто разыграть (поскольку мы ожидаем, что Count будет int).

0 голосов
/ 05 декабря 2008

Сначала приведите свой объект к списку, здесь вам не нужно размышлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...