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