0

如何实现下面接口中定义的功能?当我在 VS2010 中实现时,如下所示。MyType 变灰并且不再识别类型?谢谢!

public interface IExample
{
  T GetAnything<T>();
}

public class MyType
{
  //getter, setter here
}

public class Get : IExample
{
 public MyType GetAnything<MyType>()
 {      ^^^^^^^            ^^^^^^
   MyType mt = new MyType();
   ^^^^^^^^^^^^^^^^^^^^^^^^^^    /* all greyed out !!*/
 }
}
4

2 回答 2

2

创建一个泛型interface IExample<T>,然后使用具体类型实现它class Get : IExample<MyType>,如下例所示。

public interface IExample<T> where T : new()
{
    T GetAnything();
}

public class Get : IExample<MyType>
{
    public MyType GetAnything()
    {
        MyType mt = new MyType();
        return mt;
    }
}

public class MyType
{
    // ...
}
于 2012-04-13T20:15:21.083 回答
1

丹尼斯的回答看起来像你想要的,但万一不是,为了让你的代码正常工作,你可以这样做,但我不确定这真的有多少价值......

public class Get : IExample
{
    public T GetAnything<T>()
    {
        return default(T);
    }
}

public void X()
{
    var get = new Get();
    var mt = get.GetAnything<MyType>();
}
于 2012-04-13T20:21:00.183 回答