C#接口函数定义具体实现

时间:2012-04-13 20:12:36

标签: c# generics interface implementation

如何实现下面界面中定义的功能?当我在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 !!*/
 }
}

2 个答案:

答案 0 :(得分: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
{
    // ...
}

答案 1 :(得分:1)

Dennis的回答看起来像你想要的,但万一它不是,为了让你的代码有效,你可以做到这一点,但我是不知道这有多少价值...

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

public void X()
{
    var get = new Get();
    var mt = get.GetAnything<MyType>();
}