如何在 C# 6.0 的泛型 类 中包含特定于类型的代码?

How to include type-specific code in generic classes for C# 6.0?

我正在使用 C# 6.0 (VS2015) 编写泛型 class,它具有泛型类型的模块级值(字段、属性等)。但是,我需要为某些数据类型(特别是 int)包含额外的 methods/code,但我不知道如何以一种方式将 int 的 values/results 分配给通用类型属性编译器将接受。

class FOO<T>
{
    public T yada;

    void BAR(int nom)
    {
        if(nom is T)
        {
            yada = (T)nom;
        }
    }
}

我不知道如何让它接受最后一行:yada = (T)nom;,它总是说它无法将 nom 转换为 T

我觉得一定有一个简单的方法可以做到这一点,我以前可能也做过,但我现在肯定记不起来了。我已经广泛地尝试 google,但我一定是用错了词,因为它一直返回的只是关于如何对 class 本身进行类型约束的文章,这不是我正在尝试的去做。

你可以简单地写:

class FOO<T>
{
  public T yada;

  public void BAR(int nom)
  {
    if ( nom is T )
    {
      yada = (T)(object)nom;
    }
  }
}

例子

var foo = new FOO<int>();
foo.BAR(10);
Console.WriteLine(foo.yada);

输出

10