powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / привести generic к типу его параметра
19 сообщений из 19, страница 1 из 1
привести generic к типу его параметра
    #38534720
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Есть generic:
Код: c#
1.
public class Performer<T> where T : ProcessorType { }



и соответственно абстрактный класс
Код: c#
1.
public abstract class ProcessorType { }



Как привести экземпляр типа Performer<ProcessorType> к ProcessorType?
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534737
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sid, никак. Это два разных типа.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534746
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу понять... что вы пытаетесь сделать...
Объяснитесь :)
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534841
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sid
Как привести экземпляр типа Performer<ProcessorType> к ProcessorType?

Вы неправильно поняли генерики.
Это всего навсего способ сделать особую обработку для определенного типа.
Класс, который реализует эту обработку, никаким образом не является тем (ни родителем, ни наследником) типом, с которым он работает.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534881
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно из экземпляра Performer<ProcessorType> обратиться к свойствам ProcessorType.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534885
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и соответственно у ProcessorType есть наследники.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534920
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sid,
Код: 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.
public class Performer<T> where T : ProcessorType
	{
		 private T dataForProcess;

		public Performer(T data)
		{
				dataForProcess = data;
		}

		public void DoSomething()
		{
			dataForProcess.DoEverything();
		}


	}



	public abstract class ProcessorType
	{

		public void DoEverything()
		{

		}

	}
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534921
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sidНу и соответственно у ProcessorType есть наследники.

Код: c#
1.
2.
3.
4.
5.
6.
7.
	public class ExtProc : ProcessorType
	{

			ExtProc workExtProc = new ExtProc();
			Performer<ProcessorType> workingPerformer = new Performer<ProcessorType>(workExtProc);
			workingPerformer.DoSomething();
	}
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534923
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129the_sidНу и соответственно у ProcessorType есть наследники.

Код: c#
1.
2.
3.
4.
5.
6.
7.
	public class ExtProc : ProcessorType
	{

			ExtProc workExtProc = new ExtProc();
			Performer<ProcessorType> workingPerformer = new Performer<ProcessorType>(workExtProc);
			workingPerformer.DoSomething();
	}



разместил неправильно.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534924
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class ExtProc : ProcessorType
{	}


ExtProc workExtProc = new ExtProc();
Performer<ProcessorType> workingPerformer = new Performer<ProcessorType>(workExtProc);
workingPerformer.DoSomething();

[/quot]
во как надо.
:-)
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38534947
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
Type type = typeof(Performer<ProcessorType>).GetGenericArguments().FirstOrDefault();
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535217
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо. Понял в чем было дело. Но неужто не определив в генерике все свойства класса в его параметре(в данном случае все свойства ProcessorType) не смогу добраться до свойств ProcessorType?
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535307
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sidХорошо. Понял в чем было дело. Но неужто не определив в генерике все свойства класса в его параметре(в данном случае все свойства ProcessorType) не смогу добраться до свойств ProcessorType?
Похоже, ваше самолюбие проигнорировало 15453834 ...
Вы в состоянии привести пример решаемой задачи... для сего вам весь этот цирк?
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535376
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, то что я хочу сделать уже понял и отобразил D129, я конечно подразумеваю что Вы сейчас можете предложить заменить генерик на обычный класс, но я просто хочу разобраться как в этом случае юзать именно генерик. Для данного случая возникают неудобства.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535387
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sidДля данного случая возникают неудобства.А что делать... Авторы C# твой случай не учли. Недалёкие люди...
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535401
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К, слабо в это верится.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535461
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sid,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Performer<T>
{
     public T innerData {set;get;}
     public void DoSomethingAsProcessorType()
     {
          ProcessorType pt_ = innerData as ProcessorType;
          if (pt_ == null)
              return;
         pt_.MyMethod();
     }
}



Правда, это получается херня из-под коня, а не генерик.
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535463
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
the_sidАлексей К, слабо в это верится.Зачем тогда несправедливая критика. :-)

В дополнение к совету D129 ещё вариант:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class Performer
{
    IProcessor Processor;

    public Performer(IProcessor p)
    {
        Processor = p;
    }

    public void DoSomething()
    {
        p.DoEverything();
    }
}

public interface IProcessor
{
    void DoEverything();		
}
...
Рейтинг: 0 / 0
привести generic к типу его параметра
    #38535483
the_sid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо! Прояснилось.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / привести generic к типу его параметра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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