Tôi đang có một lớp chung mà trong đó tôi có một hàm để lấy các đặc tính của đối tượng chung được truyền. Nó như sau.lấy các thuộc tính sử dụng phản xạ cho đối tượng kiểu chung
public class ExportToCsv<T>
where T: class
{
public ExportToCsv(List<T> obj)
{
this.Data = obj;
}
public StringBuilder CreateRows()
{
IEnumerable<PropertyInfo> properties = typeof(T).GetProperties();
}
}
Nó hoạt động tốt và trả về cho tôi tính nếu tôi vượt qua các đối tượng bằng cách chọn từ một đối tượng (class) như dưới đây
//GetLeadingRoutingRecords returns a class/object
var result = from obj in GetLeadRoutingRecords()
select new
{
LeadRoutingId = obj.LeadRoutingID,
Make = obj.Make
};
và vượt qua kết quả đó như result.ToList();
nhưng khi tôi cố gắng để tạo đối tượng ẩn danh của riêng tôi bằng cách tạo lớp cho các thuộc tính như bên dưới, nó không hoạt động không trả lại bất kỳ thuộc tính nào
Lưu ý: mã dưới đây đang được gọi trong một vòng lặp và nó hoạt động tốt và được chuyển đến hàm trên có thể thấy tất cả các giá trị bằng cách gỡ lỗi.
public CsvReport function return(){
return new CsvReport
{
ShopName = this.val,
TargetVehicleName = val
}.ToList();
}
lớp mà tôi đã viết cho đối tượng ẩn danh ở trên là như dưới đây:
public class CsvReport
{
public string ShopName { get; set; }
public string TargetVehicleName { get; set; }
}
như vậy trong trường hợp này nó không làm việc, tôi đang chọn ghi đầu tiên và nhận được các thuộc tính như dưới đây
this.Data.First().GetType().GetProperties();
Tôi muốn sử dụng mẫu đầu tiên ngay cả ở đây, là type(T).GetProperties
Vì vậy, mọi công việc xung quanh xin vui lòng ........................
của bạn "vào mã bên dưới" không có ý nghĩa nhiều, mà làm cho nó một chút khó khăn để bình luận - và "đối tượng ẩn danh" của bạn ... * không phải là vô danh *: nó là một 'CsvReport'. Bạn có thể làm rõ? Hiển thị lý tưởng mã mà bạn thực sự gọi là 'ExportToCsv'? Ngoài ra: 'this.Data' được khai báo như thế nào? –
vui lòng cung cấp ví dụ nhỏ hơn, sau đó dễ tập trung hơn vào vấn đề – lordkain
Làm thế nào để bạn khởi tạo 'ExportToCsv'? –