使用模板类C#实现模板功能的接口

时间:2017-08-21 10:54:19

标签: c# templates generic-programming

我想用模板函数实现一个接口。实现的类也是模板类。我想确保已实现函数的模板参数与类

的模板参数相同
public interface A
{
    T SetValue<T>(T v);
}

public class B<ValType> : A
{
    ValType val;

    public T SetValue<T>(T v)
    {
        val = v;
    }
}

&#34; val&#34;的价值应该只在T == ValType时设置,有没有办法在编译时这样做。

1 个答案:

答案 0 :(得分:0)

一个选项:将类型提升到界面:

interface A<T>
{
    T SetValue(T v);
}

然后实现提供类型的接口:

class B<ValType> : A<ValType>
{
    public ValType SetValue(ValType v) 
    { 
        return v;
    }
}

请注意,从这一点开始,界面将被其封闭的通用类型使用:

A<int> ia = GetB(); // whatever.