Информация об изменениях

Сообщение Re: C# и хитрый вариант с дженериком для метода - как сделат от 13.05.2022 3:35

Изменено 13.05.2022 3:35 samius

Re: C# и хитрый вариант с дженериком для метода - как сделать?
Здравствуйте, senglory, Вы писали:


S>
S>public class Request<K>
S>{
S>    public K Id;
S>}

S>public class Response<T>
S>{
S>    public T Data;
S>}

S>public class MyDto
S>{
S>}


S>public abstract class BaseStorage
S>{
S>    public virtual Response<T> GetDemo<T, K>(Request<K> request)
S>    {
S>    }
S>}


S>public class ChildStorage : BaseStorage
S>{
S>    public override Response<MyDto> GetDemo<MyDto, int>(Request<int> request)
S>    {
S>        return new Response<MyDto>();
S>    }
S>}

S>


S>ВОт как мне правильно определить метод, отрисованный болдом? Сейчас в .NET 6 компилер на заголовок метода ругается и не переваривает его.

Нельзя переопределить метод, определенный с generic параметрами, используя лишь частные значения параметра. Даже c where не получится. Сигнатура должна быть в точности такой же, как и у virtual метода. Имена параметров отличаться могут, типы — нет.
Re: C# и хитрый вариант с дженериком для метода - как сделат
Здравствуйте, senglory, Вы писали:

S>ВОт как мне правильно определить метод, отрисованный болдом? Сейчас в .NET 6 компилер на заголовок метода ругается и не переваривает его.

Нельзя переопределить метод, определенный с generic параметрами, используя лишь частные значения параметра. Даже c where не получится. Сигнатура должна быть в точности такой же, как и у virtual метода. Имена параметров отличаться могут, типы — нет.