这是我的代码专家。
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
我希望这是有道理的。让我知道我的逻辑是否有缺陷,以及这种方法是否可行。谢谢!
答案 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();
}