更新数据源时出错 [英] Error during updating DataSource
问题描述
我有一个带有dataSource的dataGridView1,它由对象IProcedure(接口)重新定义,它具有2个属性,字符串名称和int loadRatio.我正在尝试使用IProcedures集合中的对象更新dataSource,但是会引发以下错误: ArgumentException:值"Data_Layer.Procedures.Create_Team"的类型不是"Data_Layer.Procedures.Commit_Team",因此不能在此泛型中使用收藏.
参数名称:值
Commit_Team实现IProcedure,Create_Team实现IProcedure.
错误出现在:
Hi,
I have a dataGridView1 with dataSource which is reprezented by object IProcedure (interface), it has 2 properties, String Name and int loadRatio. I am trying to update dataSource with objects from collection IProcedures, but it throws this error: ArgumentException: The value "Data_Layer.Procedures.Create_Team" is not of type "Data_Layer.Procedures.Commit_Team" and cannot be used in this generic collection.
Parameter name: value
Commit_Team implements IProcedure and also Create_Team implements IProcedure.
Error at:
iProcedureBindingSource.DataSource = ProceduresToSelect.Values;
代码:
Code:
public Dictionary<String, IProcedure> Procedures { get; set; }
public Dictionary<String, IProcedure> ProceduresToSelect { get; set; }
public Form1()
{
InitializeComponent();
cbProcedure.SelectionChangeCommitted +=new EventHandler(cbProcedure_SelectionChangeCommitted);
Procedures = new Dictionary<string,IProcedure>();
Procedures.Add("Commit_Team", (IProcedure)new Commit_Team(50));
Procedures.Add("Create_Team", (IProcedure)new Create_Team(50));
Procedures.Add("Create_Tournament", (IProcedure)new Create_Tournament(25));
Procedures.Add("Decline_Team", (IProcedure)new Decline_Team(50));
Procedures.Add("Player_Registration", (IProcedure)new Player_Registration(30));
Procedures.Add("Select_Free_Players", (IProcedure)new Select_Free_Players(70));
Procedures.Add("Select_New_Tournaments", (IProcedure)new Select_New_Tournaments(50));
Procedures.Add("Select_Player_Detail", (IProcedure)new Select_Player_Detail(70));
Procedures.Add("Select_Player_Ranking", (IProcedure)new Select_Player_Ranking(70));
Procedures.Add("Select_Registrations_to_Tournament", (IProcedure)new Select_Registrations_to_Tournament(50));
Procedures.Add("Select_Teams", (IProcedure)new Select_Teams(70));
Procedures.Add("Select_Tournmaments", (IProcedure)new Select_Tournaments(50));
Procedures.Add("Tournament_Registration", (IProcedure)new Tournament_Registration(50));
cbProcedure.Items.Clear();
cbProcedure.Items.AddRange(Procedures.Keys.ToArray<string>());
ProceduresToSelect = new Dictionary<string, IProcedure>(Procedures);
iProcedureBindingSource.DataSource = ProceduresToSelect.Values;
}
谁能解决这个错误?
谢谢!
-Pepin zHané
Could anyone solve this error?
Thanks!
-Pepin z Hané
推荐答案
我已经解决了,很容易打巴掌...
I have solved it, easy like a slap...
iProcedureBindingSource.DataSource = ProceduresToSelect.Values.ToList<IProcedure>();
这篇关于更新数据源时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!