позволяет сказать, что у меня есть следующий класс курса:Generic делегат
class Course
{
internal Student myStudent { get; set; }
internal string Name { get; set; }
public override string ToString()
{
return string.Format("{0, -5} {1, -15} {2}", Name, myStudent.Name, string.Join(" ", myStudent.Grade));
}
internal class Student
{
internal string Name { get; set; }
internal List<int?> Grade { get; set; }
}
}
и я хочу в основном использования в универсальном делегатом, один раз для междунар и один раз для строки:
SomeDelegate<string> d1 = new SomeDelegate<string>(course => course.Name);
SomeDelegate<int> d2 = new SomeDelegate<int>(course => (int)course.myStudent.Grade.DefaultIfEmpty(null).Average());
Общий делегат:
delegate T SomeDelegate<T>(T param);
, но я получаю ошибки.
строка не содержит определение для 'Имя' ....
Почему?
Спасибо!
'T' является как тип аргумента и тип возвращаемого делегата, поэтому в 'd1',' course' является 'string' (и в' d2', это 'int'). Вероятно, вы захотите использовать 'Func' (и 'Func '). –