Фактически, я не очень забочусь о полученных конечных точках здесь. Все, что мне нужно, - это основа. Я просто хочу, чтобы иметь возможность проходить в любой IClient и использовать его метод, независимо от того, что производная конечная точка.Общий интерфейс <T> как параметр конструктора для любого производного T
Отказ от ответственности: очень возможно, что, пытаясь удалить лишние вещи, я упростил это не совсем то же самое.
У меня есть следующий конструктор
public SomeClass(????? client)
{
_client = client;
}
public SomeMethod<TEndPoint>(SpecialObject o, TEndPoint e)
where TEndPoint: Endpoint
{
Validate(o);
//Do OtherStuff
_client.UploadToClient(o, e)
}
Интерфейс выглядит следующим образом
public interface IClient<TEndpoint> where TEndpoint: Endpoint
{
TEndpoint UploadToClient(obj o, endpoint e)
}
И у меня есть несколько реализаций
public class Client1: IClient<Endpoint1>
public class Client2: IClient<Endpoint2>
Существуют ли какие-либо шаблоны/примеры, чтобы получить меня к моменту использования универсального интерфейса в качестве параметра без указания конкретного t Ype?
Добавление, я могу разработать вокруг некоторых вещей, действительно главная цель состоит в том, что я просто не хочу, чтобы сделать SomeCase родовым, но не хочу, чтобы иметь возможность чисто и динамично принимать что-либо, что реализует IClient < >.
Я определенно вижу проблему, которую вы описываете. Я оставил неправильное количество деталей. Я собираюсь немного изменить вопрос, потому что вы правы. Тем не менее, Im фактически не ближе к решению, так как я хочу некоторую безопасность типов. – Seth
Я не верю, что возможно иметь тип безопасности типа, который вы хотите, сохраняя только один не общий «SomeClass». – recursive