类型为T的通用接口和where

时间:2018-01-23 07:48:40

标签: c# generics

我尝试使用通用接口的第一步,并使用此接口:

public interface ISetting<T>
{
    T Value { get; }
}

这样的实现:

public class MySetting : ISetting<DateTime> 
{ 
    DateTime Value { get; }
}

现在我的目标是,我可以在我的服务层编写这样的代码:

public class MyService
{
    public DateTime GetMySetting()
    {
        return MyDataLayer.GetSettings<MySetting>();
    }
}

所以在我的DataLayer中,我正在努力实现我的泛型和其中:

public T ReadOrAddOne<T>() where T : ISetting<????>
{
    // My Code goes here
}

那么如何告诉我的ISetting我在等待哪种类型?

1 个答案:

答案 0 :(得分:3)

您只需要定义另一个字母来表示该类型。

public T ReadOrAddOne<T,R>() where T : ISetting<R>
{
    return default(T);
}