【发布时间】:2016-05-25 15:50:44
【问题描述】:
我有以下界面:
public interface IModel
{
string Code { get; set; }
string Description { get; set; }
}
我有十几个类实现,示例:
public interface Obj1 : IObj1
{
string Code { get; set; }
string Description { get; set; }
}
public interface Obj2 : IObj2
{
string Code { get; set; }
string Description { get; set; }
}
IObj1 和 IObj2 都实现了 IModel:
public interface IObj1 : IModel {}
public interface IObj2 : IModel {}
在我的单元测试中,我为每个对象创建了带有值的模拟列表。目前我的代码如下所示:
public static List<IObj1> Obj1ListCacheMock()
{
var list = new List<IObj1>();
list.Add(new Obj1() { Code = "S1", Description = "Test 1" });
list.Add(new Obj1() { Code = "S2", Description = "Test 2" });
list.Add(new Obj1() { Code = "S3", Description = "Test 3" });
return list;
}
public static List<IObj2> Obj2ListCacheMock()
{
var list = new List<IObj1>();
list.Add(new Obj2() { Code = "S1", Description = "Test 1" });
list.Add(new Obj2() { Code = "S2", Description = "Test 2" });
list.Add(new Obj2() { Code = "S3", Description = "Test 3" });
return list;
}
我的目标是只有一种方法可以返回测试对象列表。比如:
public static List<IModel> Obj2ListCacheMock<IModel>()
{
var list = new List<IModel>();
list.Add(new { Code = "S1", Description = "Test 1" });
list.Add(new { Code = "S2", Description = "Test 2" });
list.Add(new { Code = "S2", Description = "Test 3" });
return list;
}
此代码错误:
错误 CS1503 参数 1:无法从 '' 转换为 'IModel'
我该如何完成这项工作,或者是否有更好的方法来实现我的目标?
【问题讨论】:
-
“不起作用”是什么意思?
-
@GendoIkari,我用错误更新了问题。
标签: c# .net generics interface