C# 通用接口在c语言中的实现#

C# 通用接口在c语言中的实现#,c#,C#,我是c#新手,正在尝试学习通用接口。我在尝试实现GetComments时出错。错误:“无法将表达式类型“WallGetObject”转换为返回类型T”。 有可能做那样的事吗?谢谢 interface IInterface { T GetComments<T>(int id); } public class A: IInterface { public T GetComments<T>() { WallGetObject item

我是c#新手,正在尝试学习通用接口。我在尝试实现GetComments时出错。错误:
“无法将表达式类型“WallGetObject”转换为返回类型T”
。 有可能做那样的事吗?谢谢

interface IInterface
{
    T GetComments<T>(int id);
}


public class A: IInterface
{
    public T GetComments<T>()
    {
        WallGetObject item
        //... getting item
        return item
    }
}

public class B : IInterface
{
     public T GetComments<T>()
      {
        TopicFeedObject item
        //... getting item
        return item
    }
}


public class MainClass()
{

var item1 = new A();
var item2 = new B();

var list = new List<IInterface>();
list.Add(item1);
list.Add(item2);


foreach (var i in list)
{
  i.GetComments(5);
}
接口界面
{
T GetComments(int-id);
}
公共A类:接口
{
公众评论
{
WallGetObject项
//…正在获取项目
退货项目
}
}
公共B类:接口
{
公众评论
{
主题提要对象项
//…正在获取项目
退货项目
}
}
公共类MainClass()
{
var item1=新的A();
var item2=新的B();
var list=新列表();
增加(第1项);
增加(第2项);
foreach(列表中的变量i)
{
i、 评论(5);
}

您应该像这样声明和实现接口。请注意,泛型类型定义被移动到接口声明而不是方法声明

interface IInterface<T>
{
    T GetComments(int id);
}


public class A: IInterface<WallGetObject>
{
    public WallGetObject GetComments(int id)
    {
        WallGetObject item
        //... getting item
        return item
    }
}

public class B : IInterface<TopicFeedObject>
{
     public TopicFeedObject GetComments(int id)
     {
        TopicFeedObject item
        //... getting item
        return item
     }
}
接口界面
{
T GetComments(int-id);
}
公共A类:接口
{
公共WallGetObject GetComments(int-id)
{
WallGetObject项
//…正在获取项目
退货项目
}
}
公共B类:接口
{
公共主题FeedObject GetComments(int id)
{
主题提要对象项
//…正在获取项目
退货项目
}
}

您应该像这样声明和实现接口。请注意,泛型类型定义被移动到接口声明而不是方法声明

interface IInterface<T>
{
    T GetComments(int id);
}


public class A: IInterface<WallGetObject>
{
    public WallGetObject GetComments(int id)
    {
        WallGetObject item
        //... getting item
        return item
    }
}

public class B : IInterface<TopicFeedObject>
{
     public TopicFeedObject GetComments(int id)
     {
        TopicFeedObject item
        //... getting item
        return item
     }
}
接口界面
{
T GetComments(int-id);
}
公共A类:接口
{
公共WallGetObject GetComments(int-id)
{
WallGetObject项
//…正在获取项目
退货项目
}
}
公共B类:接口
{
公共主题FeedObject GetComments(int id)
{
主题提要对象项
//…正在获取项目
退货项目
}
}

乍一看,我相信您要做的是实现一个接口方法,为每个具体类返回不同的类型。也就是说,
a.GetComments
应该返回
WallGetObject
B.GetComments()
应该返回一个
TopicFeedObject
。这可以通过使用通用接口(而不是像您这样的通用方法)来实现


乍一看,我相信您要做的是实现一个接口方法,为每个具体类返回不同的类型。也就是说,
a.GetComments
应该返回
WallGetObject
B.GetComments()
应该返回一个
TopicFeedObject
。这可以通过使用通用接口(而不是像您这样的通用方法)来实现


您正在将泛型接口与泛型方法混合。您定义泛型接口的方式是将非泛型接口与泛型方法混合。您正在将泛型接口与泛型方法混合。您定义泛型接口的方式是将非泛型接口与泛型方法混合。感谢您的精彩解释!感谢您的精彩解释!
interface IComments {}

class WallGetObject : IComments {}
class TopicFeedObject : IComments {}

interface IInterface
{
    IComments GetComments(int id);
}

public class A: IInterface
{
    public IComments GetComments()
    {
        WallGetObject item
        //... getting item
        return item
    }
}

public class B : IInterface
{
     public IComments GetComments()
     {
        TopicFeedObject item
        //... getting item
        return item
    }
}