c# - 根据其他属性设置属性的方式

标签 c# .net c#-4.0 c#-3.0 c#-2.0

所以,我有这段代码

        Process[] processesManager = Process.GetProcesses();
        List<ProcessInfo> temporaryProcessesList = new List<ProcessInfo>();
        for (int i = 0; i < processesManager.Length; ++i)
        {
            temporaryProcessesList.Add(new ProcessInfo(processesManager[i].ProcessName, processesManager[i].Id, TimeSpan.Zero, "Group"));
        }

        processesList = temporaryProcessesList.GroupBy(d => new {d.Name}).Select(d => d.First()).ToList();

此代码用于获取当前进程。然后我将这些进程添加到 temporaryProcessesList。而不是简单的字符串“Group”,我想根据进程的名称设置属性。例如,如果进程的名称为 leagueoflegends.exe,那么我想将组设置为“游戏”,如果它的 devenv.exe 我想将组设置为“软件开发”。

我的问题是,如何以最简单/最好的方式做到这一点?我正在考虑将 Dictionary 与字符串和枚举一起使用。并将 ProcessName 与字符串进行比较。但也许有更好的方法。

ProcessInfo 是具有 4 个属性和构造函数的简单类。

public class ProcessInfo
{
    private string Name { get; set; }
    private int Id { get; set; }
    private TimeSpan Time { get; set; }
    private string Group { get; set; }

    public ProcessInfo(string name, int id, TimeSpan time, string group)
    {
        Name = name;
        Id = id;
        Time = time;
        Group = group;
    }
}

最佳答案

使用字典是实现此目的的最佳方式:

var dictionary = new Dictionary<string, string>();
dictionary.Add("a.exe", "aGroup");
dictionary.Add("b.exe", "bGroup");

string val;
if (dictionary.TryGetValue(processName, out val))
    processInfo.Group = val;
else
    processInfo.Group = "Undefined Group";

关于c# - 根据其他属性设置属性的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38284302/

相关文章:

.net - 签署 .NET 程序集

c# - 减少数据库往返

c# - EF TPH 继承查询

c# - DllNotFoundException,但 DLL 存在

c# - 分解项目创建等式链的链(可能是递归的)

c# - 从 .NET 中的字符串末尾修剪字符串 - 为什么缺少这个?

c# - 如何在 ASP.NET MVC 6 中为不同的环境注册不同的服务?

.net - .NET 设计指南是否建议在 IEnumerable<T> 上返回 List<T>?

c# - 主窗体上的状态消息

c# - 为什么 IEnumerable<T> 被定义为 IEnumerable<out T>,而不是 IEnumerable<T>