代码之家  ›  专栏  ›  技术社区  ›  nicolas

使用自由绑定泛型类型作为类型参数

  •  0
  • nicolas  · 技术社区  · 14 年前

    你看到一个方法来指定我的结果类型必须是 在这个界面内?

    interface IMonad<MonadType>  //  where MonadType : GenricType<>
    {
        MonadType<T1> unit<T1>(T1 t)
        Func<MonadType<T1>, MonadType<T2>> map<T1, T2>(Func<T1, T2> f);
    }
    

    我得到一个错误: 类型参数“MonadType”不能与类型参数一起使用

    1 回复  |  直到 14 年前
        1
  •  0
  •   Tim Robinson    14 年前

    不,你不能用.NET泛型来做这个。您要做的是指定 MonadType 类型参数本身必须有一个泛型参数;.NET类型系统不能表示该约束。

    这里有一种在C#中伪造一般单子的方法: http://sandersn.com/blog//index.php/2010/04/23/faking-type-classes-in-c