亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何制作具有類型的通用接口列表

如何制作具有類型的通用接口列表

C#
慕蓋茨4494581 2022-06-18 17:45:42
這是我的代碼伙計們。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; }}現在我想要的是創建一個IScorecardRule接口列表并迭代實現它的每個規則。我計劃根據要求在此處添加更多規則,每個規則都具有返回的 'Extract' 方法的差異實現List<T>。這里的問題是ExtractMethod 不可訪問。var rules = new List<IScorecardRule>();rules.Add(new AdminRule()); //Rule for Admin//rules.Add(new DeveloperRule()); //Rule for Developerforeach (var rule in rules){     var myList = rule.Extract(); //Extract Method Not Accessible     //--More Code here--//}我希望這是有道理的。讓我知道我的邏輯是否有缺陷以及這種方法是否可行。謝謝!
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

問題出在第一行:

var rules = new List<IScorecardRule>();

您將列表聲明為IScorecardRule而不是IScorecardRule<AdminRepository>

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


查看完整回答
反對 回復 2022-06-18
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

我只是通過使用下面的代碼設法解決了這個問題。解決方案雖然不是很漂亮,但我將把這個留在這里。


foreach (var rule in rules)

{

    Type typeParameterType = rule.GetType();

    var instance = (dynamic)Activator.CreateInstance(typeParameterType);

    var myList = instance.Extract();

}


查看完整回答
反對 回復 2022-06-18
  • 2 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號