Tôi có một thuộc tính tùy chỉnh mà tôi áp dụng cho các thuộc tính trên một lớp. Thuộc tính này được sử dụng để xuất các thuộc tính của lớp vào một tệp phẳng.C# Cách sắp xếp các thuộc tính trên một lớp bằng thuộc tính thuộc tính tùy chỉnh
Một trong các thuộc tính của thuộc tính là FieldOrder. Tôi cần phải chắc chắn rằng thứ tự mà tôi xuất các thuộc tính của lớp là chính xác. Ngoài ra, không phải tất cả các thuộc tính trên lớp sẽ có thuộc tính tùy chỉnh.
Tôi tìm thấy bài viết này: How do I sort a generic list based on a custom attribute? Giải pháp này giả định tất cả các thuộc tính đều có thuộc tính tùy chỉnh, đây không phải là trường hợp của tôi. Tôi cũng hy vọng cho giải pháp thanh lịch hơn.
Trợ giúp của bạn được đánh giá cao!
public interface IFileExport{}
public class ExportAttribute: Attribute
{
public int FieldOrder { get; set; }
public int FieldLength { get; set; }
public ExportAttribute() { }
}
public class ExportClass: IFileExport
{
[ExportAttribute(FieldOrder = 2, FieldLength = 25)]
public string LastName { get; set; }
[ExportAttribute(FieldOrder=1, FieldLength=25)]
public string FirstName { get; set; }
[ExportAttribute(FieldOrder = 3, FieldLength = 3)]
public int Age { get; set; }
public ExportClass() { }
}
public class TestClass
{
public static List<PropertyInfo> GetPropertiesSortedByFieldOrder(IFileExport fileExport)
{
//get all properties on the IFileExport object
PropertyInfo[] allProperties = fileExport.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);
//now I need to figure out which properties have the ExportAttribute and sort them by the ExportAttribute.FieldOrder
}
}
UPDATE: Tôi ra lệnh cho các thuộc tính của ExportAttribute.FieldOrder Tăng dần
Chỉ là một ý nghĩ, nhưng có lẽ sẽ dễ dàng hơn để làm một xml tuần tự hóa đơn giản, và sau đó viết một thư viện để chuyển đổi xml phẳng đơn giản thành một tệp phẳng. Nó có thể tái sử dụng và bạn có thể bỏ qua tất cả các công việc thiết lập thuộc tính tùy chỉnh và sự phản chiếu này. – asawyer