Return a List or a ObservableCollection
It's crazy generic method time! Here is a method I created for fun that either returns a List<T> or a ObservableCollection<T>, depending on what you pass in via generic parameters. It creates a list of Product entity instances with some fake data.
The L stands for the type of ICollection you want to create and return. For example a List<T> or a ObservableColleciton<T>. The P stands for a Product class type. This could be replaced with any type of entity, just replace the condition of where : Product with the entity type of your choice.
You can call it using this code:
List<Product> productList = CreateProductList<List<Product>, Product>();
or
ObservableCollection<Product> productOC =
CreateProductList<ObservableCollection<Product>, Product>();
Its just for fun ... so enjoy.
1: private L CreateProductList<L, P>()
2: where P : Product, new()
3: where L : ICollection<P>, new()
4: {
5: L products = new L
6: {
7: new P
8: {
9: ProductId = 70,
10: ProductName = "Outback Lager",
11: QuantityPerUnit = "24 - 355 ml bottles",
12: UnitsInStock = 15,
13: UnitPrice = 15,
14: UnitsOnOrder = 10,
15: ReorderLevel = 30,
16: Discontinued = false
17: },
18: new P
19: {
20: ProductId = 71,
21: ProductName = "Flotemysost",
22: QuantityPerUnit = "10 - 500 g pkgs.",
23: UnitsInStock = 25,
24: UnitPrice = (decimal)21.5,
25: UnitsOnOrder = 0,
26: ReorderLevel = 0,
27: Discontinued = false
28: },
29: new P
30: {
31: ProductId = 35,
32: ProductName = "Steeleye Stout",
33: QuantityPerUnit = "24 - 12 oz bottles",
34: UnitsInStock = 20,
35: UnitPrice = (decimal)18,
36: UnitsOnOrder = 0,
37: ReorderLevel = 15,
38: Discontinued = false
39: },
40: new P
41: {
42: ProductId = 53,
43: ProductName = "Perth Pasties",
44: QuantityPerUnit = "48 pieces",
45: UnitsInStock = 0,
46: UnitPrice = (decimal)32.80,
47: UnitsOnOrder = 0,
48: ReorderLevel = 0,
49: Discontinued = true,
50: DiscontinuedDate = new DateTime(1996, 7, 4)
51: }
52: };
53: return products;
54: }