C# 如何使用其他类中的方法将列表清空到listbox中
我有一门课:C# 如何使用其他类中的方法将列表清空到listbox中,c#,C#,我有一门课: class Game { public static List<Participant> Participants = new List<Participant>(); public static List<SummonerStats> SummonerStatsList = new List<SummonerStats>(); } 我想将召唤者状态列表中的每个对象添加到列表框中。我可以通过在button2_Clic
class Game
{
public static List<Participant> Participants = new List<Participant>();
public static List<SummonerStats> SummonerStatsList = new List<SummonerStats>();
}
我想将召唤者状态列表中的每个对象添加到列表框中。我可以通过在button2_Click方法下遍历列表中的每个对象来实现这一点,但我不希望在我的界面中有任何代码
我如何在游戏类中创建一个方法,返回列表中的每个项目,或者最干净的解决方案是什么,允许我将代码和接口分开。为了保持代码和接口分开,您可以通过执行以下操作来实现这一点:
在Game类中创建一个方法,该方法返回一个字符串类型列表(GetCallerstats)
在名为CallowerStatsList的列表中使用,从CallowerStats类中选择特定属性(在本例中我使用了“PropertyName”)
public static List<string> GetSummonerStats()
{
return SummonerStatsList.Select(x => x.PropertyName).ToList();
}
Vibhav Ramcharan的答案稍有不同,我将从列表中选择内容的逻辑移到了按钮单击方法中。这就省去了在游戏类中创建新方法的麻烦
如果每次希望填充表单中的简单列表时都要继续向游戏类添加方法,那么游戏类将很快变得过于臃肿
基本上,您在这里所做的是根据请求从CallersStatsList中仅选择填充列表所需的属性
这个答案会使您失去可重用性,因为业务逻辑现在位于button click事件中,但是如果需要此代码的可重用性,那么请将逻辑移动到业务层中的另一个方法中,并且不要使游戏类膨胀,因为它看起来像是某种存储库
public class Game
{
public static List<Participant> Participants = new List<Participant>();
public static List<SummonerStats> SummonerStatsList = new List<SummonerStats>();
}
private void button2_Click(object sender, EventArgs e)
{
lstSummonerStats.DataSource = Game.SummonerStatsList.Select(x => x.PropertyName).ToList();
}
有许多模式可以应用。DataIndig(生成它,或将它包装在ObservableCollection中)、MVVM、事件等等,并非都是互斥的。你试过什么?我从没听说过这些。我唯一能想到的就是在button_click方法中遍历列表:(
private void button2_Click(object sender, EventArgs e)
{
lstSummonerStats.DataSource = Game.GetSummonerStats();
}
public class Game
{
public static List<Participant> Participants = new List<Participant>();
public static List<SummonerStats> SummonerStatsList = new List<SummonerStats>();
}
private void button2_Click(object sender, EventArgs e)
{
lstSummonerStats.DataSource = Game.SummonerStatsList.Select(x => x.PropertyName).ToList();
}
public static class GameExtensions
{
public static List<string> GetSummonerList(this Game game)
{
return game.SummonerStatsList.Select(x => x.PropertyName).ToList();
};
}
private void button2_Click(object sender, EventArgs e)
{
lstSummonerStats.DataSource = Game.GetSummonerList();
}