Tôi chắc chắn rằng câu hỏi này đề cập đến điều gì đó đã được nêu ra trong câu hỏi trước, nhưng tôi không thể tìm thấy nó.Chuyển đổi Danh sách loại cơ sở thành Danh sách loại thừa kế
Có một phương thức trong lớp C# lấy tham số là Danh sách chung của một Lớp cơ sở. Tôi cần phải vượt qua một danh sách của một lớp thừa kế và không biết chính xác làm thế nào để làm điều này. Tôi đang gặp lỗi trong nỗ lực của mình. Dưới đây là mã mẫu để minh họa điều này:
public class A
{
public static void MethodC(List<A>)
{
// Do Something here with the list
}
}
public Class B : A
{
// B inherits from A, A is the Base Class
}
// Code utilizing the above method
List<B> listOfB = new List<B>();
A.MethodC((List<A>) listOfB); // Error: this does not work
A.MethodC(listOfB.ToList<typeof(A)>()); // Error: this does not work
A.MethodC(listOfB.ConvertAll<A>(typeof(A))); // Error: this does not work
// how can I accomplish this? It should be possible I would think
Lưu ý: Đây là phương pháp làm việc cuối cùng của tôi làm tài liệu tham khảo. Tôi đã có một giải pháp tốt hơn cho vấn đề của mình, nhưng về mặt kỹ thuật nó không phải là câu trả lời cho câu hỏi, vì câu hỏi của tôi đã bị phrased không đúng.
public static DataTable
ObjectCollectionToDataTable<GLIST>
(List<GLIST> ObjectCollection) where GLIST
: BaseBusinessObject
{
DataTable ret = null;
if (ObjectCollection != null)
{
foreach (var b in ObjectCollection)
{
DataTable dt = b.ToDataTable();
if (ret == null)
ret = dt.Clone();
if (dt.Rows.Count > 0)
ret.Rows.Add(dt.Rows[0].ItemArray);
}
}
return ret;
}
Đó là cùng một câu trả lời mà tôi đã cung cấp cho bạn ... –
Và đó là về mặt kỹ thuật câu trả lời cho những gì bạn đã hỏi ban đầu, cũng! :) –