C# 添加到类中
给定以下类C# 添加到类中,c#,C#,给定以下类 public class Company { public List<Product> Products { get; set; } } public class Product { public Guid Id { get; set; } public List<ProductPermission> Permissions { get; set; } } public class ProductPermission {
public class Company
{
public List<Product> Products { get; set; }
}
public class Product
{
public Guid Id { get; set; }
public List<ProductPermission> Permissions { get; set; }
}
public class ProductPermission
{
public Guid Id { get; set; }
public string Name { get; set; }
}
如果我知道产品ID,向现有产品添加产品权限的最佳方法是什么?我假设您有一个IEnumerable,否则您可以直接更改产品
您可以在多个上使用FirstOrDefault或SingleOrDefaultthrows exception,根据给定的GUID获取正确的产品。然后,您可以向列表中添加权限:
Product p = products.FirstOrDefault(p => p.Id == givenID));
if(p != null)
{
if(p.Permissions == null)
p.Permissions = new List<ProductPermission>();
p.Permissions.Add(new ProductPermission{ID = givenID, Name="PermissionName"});
}
因为您使用的是列表,所以没有快速查找的好方法-您应该切换到字典
var perm = new ProductPermission() { Id = ..., Name = ... };
var prod = company.Products.FirstOrDefault(o => o.Id == perm.Id);
if (prod != null)
prod.Permissions.Add(perm);
不知道,也许你在找像Find这样的东西
你一行就可以做到 我会这样做的。我不知道这是不是最好的
public class Product
{
public Guid Id { get; set; }
public List<ProductPermission> Permissions { get; set; }
public void AddPermission(ProductPermission permission)
{
if(Permissions == null)
{
Permissions = new List<ProductPermission>();
}
Permissions.Add(permission);
}
}
在上述解决方案中,您不需要在要添加权限的每一位代码中都检查null List。您将只在一个地方拥有它…假设您有一个公司对象和一个ProductPermission对象
Company c = new Company();
ProductPermission permission = new ProductPermission();
Product p = c.Products.Find((p)=>p.Id == id);
if (p != default(Product))
p.Permissions.Add(permission);
这里没有足够的细节来回答你的问题。您是在问如何通过ID查找产品吗?产品存放在哪里?它们在数据库中吗?你在用ORM吗?你已经试过什么了?没有最好的方法,只有一种方法可以提供给你如何设置:通过逐个搜索产品找到产品并添加权限。您希望得到什么样的答案?最佳方式、最佳面向对象方式或最佳CPU性能是什么意思?
public class Product
{
public Guid Id { get; set; }
public List<ProductPermission> Permissions { get; set; }
public void AddPermission(ProductPermission permission)
{
if(Permissions == null)
{
Permissions = new List<ProductPermission>();
}
Permissions.Add(permission);
}
}
product.AddPermission(permission);
Company c = new Company();
ProductPermission permission = new ProductPermission();
Product p = c.Products.Find((p)=>p.Id == id);
if (p != default(Product))
p.Permissions.Add(permission);