如何列出具有类型的通用接口

时间:2018-12-18 12:46:03

标签: c# generics interface return-type

这是我的代码专家。

FT.SEARCH permits "@tags:{DE|EN} -@tags:{NO|EE}"

现在,我要创建一个public interface IScorecardRule { } public interface IScorecardRule<T> : IScorecardRule { List<T> Extract(); } public class AdminRule : IScorecardRule<AdminRepository> { public List<AdminRepository> Extract() { return new List<AdminRepository>(); } } public class AdminRepository { public string Firstname { get; set; } public string Lastname { get; set; } } 接口的列表并迭代实现该接口的每个规则。我计划根据要求在此处添加更多规则,并使用diff实现的“提取”方法的diff实现返回IScorecardRule。这里的问题是List<T>方法不可访问。

Extract

我希望这是有道理的。让我知道我的逻辑是否有缺陷,以及这种方法是否可行。谢谢!

2 个答案:

答案 0 :(得分:0)

问题在第一行:

var rules = new List<IScorecardRule>();

您将列表声明为IScorecardRule,而不是IScorecardRule<AdminRepository>

由于提取方法不在IScorecardRule界面中,因此无法看到。

答案 1 :(得分:-2)

我刚刚使用下面的代码设法解决了这个问题。解决方案虽然不是很漂亮,但我将把它留在这里。

foreach (var rule in rules)
{
    Type typeParameterType = rule.GetType();
    var instance = (dynamic)Activator.CreateInstance(typeParameterType);
    var myList = instance.Extract();
}