相关疑难解决方法(0)

具有泛型的隐式运算符不适用于接口

我基本上有以下类(在C#上创建的示例为泛型类创建隐式转换?).

class MyClass<T>
{
  public MyClass(T val)
  {
     Value = val;
  }

  public T Value { get; set; }

  public static implicit operator MyClass<T>(T someValue)
  {
     return new MyClass<T>(someValue);
  }

  public static implicit operator T(MyClass<T> myClassInstance)
  {
     return myClassInstance.Value;
  }
}
Run Code Online (Sandbox Code Playgroud)

一个人可以做到

MyClass<IFoo> foo1 = new Foo();
MyClass<Foo>  foo2 = new Foo();

//But not
MyClass<IFoo> foo3 = (IFoo)new Foo();
Run Code Online (Sandbox Code Playgroud)

当尝试做类似的事情时,会出现真正的问题

void Bar(IFoo foo)
{
    Bar2(foo);
    //What should be the same as
    Bar2<IFoo>(new MyClass<IFoo>(foo));
}

void Bar2<T>(MyClass<T> …
Run Code Online (Sandbox Code Playgroud)

c# generics implicit-conversion

6
推荐指数
1
解决办法
1391
查看次数

标签 统计

c# ×1

generics ×1

implicit-conversion ×1