Можно ли иметь произвольное количество аргументов типа для абстрактного метода? - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть абстрактный класс, и я хочу, чтобы производный класс определял не только тип значения, но и позволял им определять, сколько типов значений они имеют. Затем я хочу требовать, чтобы у них были методы получения / установки для каждого типа:

public abstract class A<T1, T2, ..., TN>
{
    // Getters
    public abstract T1 GetValue();
    public abstract T2 GetValue();
    ...
    public abstract TN GetValue();
    // Setters
    public abstract void SetValue(T1 newVal);
    public abstract void SetValue(T2 newVal);
    ...
    public abstract void SetValue(TN newVal);
}

Тогда классы, производные от A, могут иметь столько значений, сколько они хотят, если они предоставляют к ним доступ. Это возможно в c#? Или что-то похожее на это?

1 Ответ

5 голосов
/ 21 февраля 2020

Нет. Они должны быть явно определены, потому что компилятор должен выяснить, что делать с типами, встроенными в сборку.

Подобный эффект можно получить с помощью генератора кода.

...