Дженерики и приведение к типу
От: huligun Россия  
Дата: 24.10.08 15:20
Оценка:
Хочу написать следующим образом, но компилятор ругается.


public event EventHandler<TreeNodeActionArgs<Video>> NewVideosTreeNodeSelected;

private void OnTreeNodeSelected<T>(object sender, TreeNodeActionArgs<T> e)
{
    NewVideosTreeNodeSelected(this, e); 
        //здесь компилятор выдает ошибку
        //не может привести TreeNodeActionArgs<T> к TreeNodeActionArgs<Video>
}


Как все таки сделать так чтобы заработало, если я точно знаю что в T придет Video.
Re: Дженерики и приведение к типу
От: Aen Sidhe Россия Просто блог
Дата: 24.10.08 15:26
Оценка:
Здравствуйте, huligun, Вы писали:

H>Хочу написать следующим образом, но компилятор ругается.


H>

H>public event EventHandler<TreeNodeActionArgs<Video>> NewVideosTreeNodeSelected;

H>private void OnTreeNodeSelected<T>(object sender, TreeNodeActionArgs<T> e)
    where T : Video
H>{
H>    NewVideosTreeNodeSelected(this, e); 
H>        //здесь компилятор выдает ошибку
H>        //не может привести TreeNodeActionArgs<T> к TreeNodeActionArgs<Video>
H>}

H>


H>Как все таки сделать так чтобы заработало, если я точно знаю что в T придет Video.



Так?
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: Дженерики и приведение к типу
От: huligun Россия  
Дата: 24.10.08 15:40
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Здравствуйте, huligun, Вы писали:


H>>Хочу написать следующим образом, но компилятор ругается.


H>>

H>>public event EventHandler<TreeNodeActionArgs<Video>> NewVideosTreeNodeSelected;

H>>private void OnTreeNodeSelected<T>(object sender, TreeNodeActionArgs<T> e)
AS>    where T : Video
H>>{
H>>    NewVideosTreeNodeSelected(this, e); 
H>>        //здесь компилятор выдает ошибку
H>>        //не может привести TreeNodeActionArgs<T> к TreeNodeActionArgs<Video>
H>>}

H>>


H>>Как все таки сделать так чтобы заработало, если я точно знаю что в T придет Video.



AS>Так?


Увы это не помогло, таже ошибка компилятора. Не может скастить е к типу TreeNodeActionArgs<Video>, который требуется для делегата EventHandler<TreeNodeActionArgs<Video>>.
Re[3]: Дженерики и приведение к типу
От: Pavel M. Россия  
Дата: 24.10.08 15:44
Оценка:
Здравствуйте, huligun, Вы писали:

H>Увы это не помогло, таже ошибка компилятора. Не может скастить е к типу TreeNodeActionArgs<Video>, который требуется для делегата EventHandler<TreeNodeActionArgs<Video>>.


Текст ошибки сюда напишите.
--------------------------
less think — do more
Re: Дженерики и приведение к типу
От: huligun Россия  
Дата: 24.10.08 15:55
Оценка:
Решено

Было две ошибки

Delegate 'System.EventHandler<TreeNodeActionArgs<Video>>' has some invalid arguments
Argument '2': cannot convert from 'TreeNodeActionArgs<T>' to 'TreeNodeActionArgs<Video>'

И приведение через (TreeNodeActionArgs<Video>)e тоже не помогало, писал что не может сконвертить.

Проблему решил банально, все отлично скомпилилось и в рантайме привелось к типу через (e as TreeNodeActionArgs<Video>).
Re[2]: Дженерики и приведение к типу
От: chocho Россия  
Дата: 24.10.08 16:21
Оценка:
Здравствуйте, huligun, Вы писали:

H>Проблему решил банально, все отлично скомпилилось и в рантайме привелось к типу через (e as TreeNodeActionArgs<Video>).


зачем так делать?

А почему не

public event EventHandler<TreeNodeActionArgs<T>> NewVideosTreeNodeSelected;

private void OnTreeNodeSelected<T>(object sender, TreeNodeActionArgs<T> e)
{
    if (NewVideosTreeNodeSelected != null)
        NewVideosTreeNodeSelected(this, e);
}
"Не морочьте мне голову. Полыхаев" ©
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.