Как передать Универсальный класс в качестве параметра неуниверсальному конструктору класса

Не определяйте столбец или оценивайте при вставке, и значением constaint ПО УМОЛЧАНИЮ заменят отсутствующее значение.

я не знаю, как это работало бы в таблице отдельного столбца. Я имею в виду: это было бы, но это не будет очень полезно.

5
задан sth 22 July 2010 в 22:07
поделиться

4 ответа

Если вы не хотите делать SynchRequestInfo универсальным, можете ли вы создать неуниверсальный базовый класс для ClientRequestInfo ? -

public abstract class ClientRequestInfo
{
    public abstract void NonGenericMethod();
}

public class ClientRequestInfo<K, V> : ClientRequestInfo
{
    public override void NonGenericMethod()
    {
        // generic-specific implementation
    }
}

Затем:

public class SynchRequest
{
    private ClientRequestInfo info;

    private SynchRequest(ClientRequestInfo requestInfo)
    {
        this.info = requestInfo;
    }

    public void Execute()
    {
        // ADDED: for example
        info.NonGenericMethod();
    }
}
7
ответ дан 13 December 2019 в 19:30
поделиться

The class has to be generic if you want generic member variables.

private ClientRequestInfo<????,?????> info;

Is a generic member.

You can use a non-generic base class or interface:

class ClientRequestInfo<K,Y> : IClientRequestInfo

But in your example, ClientRequestInfo doesn't have any non-generic members, so the interface/base class would be empty and have to be casted to the correct generic version to be useful anyway.

2
ответ дан 13 December 2019 в 19:30
поделиться

У вас есть два варианта, если вы не хотите делать SynchRequestInfo универсальным.

  1. Создайте неуниверсальный базовый класс, используя его обоими.
  2. Предоставьте интерфейс для использования, например как ISynchInfo, и пусть ваш общий класс реализует интерфейс.

В этом случае я бы предпочел интерфейсный подход, так как вы можете захотеть синхронизировать другие типы (отдельно от клиентских запросов) в будущем.

1
ответ дан 13 December 2019 в 19:30
поделиться

Заставить ClientRequestInfo (K, V) реализовать интерфейс ClientRequestInfo с функциями интерфейса, которые потребуются SynchRequest.

1
ответ дан 13 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: