首页 > 解决方案 > 抽象方法是否可以有任意数量的类型参数?

问题描述

我有一个抽象类,我想让派生类不仅定义值类型,还让它们定义它们有多少个值类型。然后我想要求他们为每种类型都有 getter/setter:

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#中可能吗?或者类似的东西?

标签: c#inheritancetypesabstract-classabstraction

解决方案


不,它们必须明确定义,因为编译器必须弄清楚如何处理要构建到程序集中的类型。

您可以通过代码生成器获得类似的效果。


推荐阅读