powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Cast<TResult> приведение к заранее неизвестному типу
11 сообщений из 11, страница 1 из 1
Cast<TResult> приведение к заранее неизвестному типу
    #37888941
Тройка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. У меня есть переменная result типа ArrayList. Привести ее к массиву типа string можно так:
Код: c#
1.
string[] mas = result.Cast<string>().ToArray<string>();   


к массиву типа int так:
Код: c#
1.
int[] mas = result.Cast<int>().ToArray<int>();   


Как мне быть, если я заранее не знаю тип к которому мне нужно привести ArrayList? У меня есть только имя класса к которому нужно привести в переменной типа string. Т.е. с помощью рефлексии я могу, например, создать экземпляр этого класса. Никак не могу догадаться как мне передать этот тип в Cast?
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37890505
QWlite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
switch
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37890613
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QWlite,

var
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37890768
QWlite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deza,

я имел в виду что-нибудь такое
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
object some(string input)
        {
            object mas;
            switch (input)
            {
                    
                case "int":
                    mas = result.Cast<int>().ToArray<int>();  
                    break;
                case "string":
                    mas = result.Cast<string>().ToArray<string>();
                    break;
                default:
                    mas = null;
                    break;
            }

            return mas;
        }
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37891019
Тройка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перебор switch это слишком жесткий код. У меня в ArrayList хранятся экземпляры моих классов, которые могут изменится со временем.
Код: c#
1.
Cast<var>

тоже не будет работать.
Решил проблему тем, что у всех моих классов есть один родительский класс, допустим BaseClass. И соответственно имеет смысл запись вида:
Код: c#
1.
result.ToArray(type) as BaseClass[];
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37891029
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тройка,

покопай в сторону обобщений, например посмотри как List<> реализован
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37892086
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тройка,

как только ты немного подумаешь, ты поймёшь , что это тебе не нужно
представь, что тебе удалось это сделать, =)) и что дальше ? что будешь делать с этим непонятным массивом
такого, чего ты не мог бы сделать с ArrayList
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37892093
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QWliteDeza,

я имел в виду что-нибудь такое
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
object some(string input)
        {
            object mas;
            switch (input)
            {
                    
                case "int":
                    mas = result.Cast<int>().ToArray<int>();  
                    break;
                case "string":
                    mas = result.Cast<string>().ToArray<string>();
                    break;
                default:
                    mas = null;
                    break;
            }

            return mas;
        }



пипец решение =)) был ArrayList , а стал вообще object
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37892765
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то типа такого

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
using System;
using System.Collections;
using System.Linq;

namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            Myclass myclass = new Myclass();
            ArrayList arrayList = new ArrayList { new User(), new User() };
            Array ss = myclass.Get<User>(arrayList);
        }
    }

    public class Myclass
    {
        public Array Get<T>(ArrayList arrayList)
        {
            return arrayList.Cast<T>().ToArray<T>();

        }
    }

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

}
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37893224
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
Type type = Type.GetType("System.String");
result.Cast<type>().ToArray<type>();




как-то так
...
Рейтинг: 0 / 0
Cast<TResult> приведение к заранее неизвестному типу
    #37893320
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick,

с каких пор в генериках можно использовать переменную типа?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Cast<TResult> приведение к заранее неизвестному типу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]