C# 通用接口在c语言中的实现#
我是c#新手,正在尝试学习通用接口。我在尝试实现GetComments时出错。错误: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
“无法将表达式类型“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
}
}