我有以下课程,其中有一个
IEnumerable
列表如下
public class Orders
{
public string No { get; set; }
public string Id { get; set; }
public IEnumerable<string> OrderTypes { get; set; } = new List<string> { "order 1", "order 2", "order 3" }
}
我可以不直接在上面分配值,而是可以将其放入单独的类中,如下所示
public class OrderTypes()
{
IEnumerable<string> myEnumerable = new List<string>()
myEnumerable.add("Order 1")
myEnumerable.add("Order 3")
myEnumerable.add("Order 4")
myEnumerable.add("Order 5")
myEnumerable.add("Order 6")
}
然后像上面那样调用这个函数
public class Orders
{
public string No { get; set; }
public string Id { get; set; }
public IEnumerable<string> OrderTypes { get; set; } = OrderTypes
}
这样做的原因是因为我的列表太长,这样更容易查看,但我不知道如何实现这一点。
足够接近。您可以简单地使用静态方法:
public class Orders
{
public string No {get;set;}
public string Id {get;set;}
public IEnumerable<string> OrderTypes{get;set;} = CreateOrderTypes();
private static IEnumerable<string> CreateOrderTypes()
{
return new List<string>
{
"Order 1",
"Order 3",
"Order 4",
"Order 5",
"Order 6",
};
}
}
当然,
CreateOrderTypes
不必在同一个班级,可以移动到不同的班级。第二个类必须对第一个类可见。
public class Orders
{
public string No {get;set;}
public string Id {get;set;}
public IEnumerable<string> OrderTypes{get;set;} = OrderTypesFactory.InitOrderTypes();
}
static class OrderTypesFactory
{
static IEnumerable<string> InitOrderTypes()
{
return new List<string>
{
"Order 1",
"Order 3",
"Order 4",
"Order 5",
"Order 6",
};
}
}
如果我正确理解了这个问题,你可以有一个类
Orders
的构造函数,然后当你实例化该类时,你可以在其中传递 IEnumerable 的值并分配该值。所以它看起来像:
public class Orders
{
public string No { get; set; }
public string Id { get; set; }
public IEnumerable<string> OrderTypes { get; set; }
public Orders(IEnumerable<string> orderTypes)
{
OrderTypes = orderTypes;
}
}
public class Main
{
public void Main()
{
var orderTypes = new List<string>() { "Your", "values", "Here" };
var orders = new Orders(orderTypes);
}
}