Điều tôi đang làm là tra cứu giá trị cho một trường cụ thể trong thẻ bắt đầu bằng #. Đối tượng có thể là một số ít các kiểu nguyên thủy mà giá trị của nó được đặt bên trong XML nhưng nó xuất phát từ đối tượng có thể bắt đầu bằng. Vì vậy, tôi có vấn đề cần phải quyết định loại là gì, bỏ nó lên và sau đó sử dụng loại ToString đó. Sẽ tốt hơn nếu tôi không cần phải bỏ nó nhưng sau đó nó sẽ gọi ToString trên kiểu đối tượng và không phải là phương thức đối tác trên loại thực tế.Cách thức sạch sẽ để truyền tới một đối tượng thực tế là
Mã sau đây có chức năng chính xác, nhưng tôi không cảm thấy thoải mái với nó. Có lẽ theo con đường thoải mái này sẽ dẫn đến tôi là một người thuần túy. Dù bằng cách nào tôi sẽ rất nhiều đánh giá cao một cách đẹp hơn để viết này nếu như vậy tồn tại.
public string GetColumnValue(string columnName)
{
object value = item[columnName];
if (value == null)
return string.Empty;
if (value.GetType() == typeof(string))
{
return (string)value;
}
else if (value.GetType() == typeof(double))
{
return ((double)value).ToString();
}
...
}
Điều này làm việc cho các loại cơ bản, nhưng có thể không hoạt động tốt cho các loại tùy chỉnh - phụ thuộc vào những gì có thể được trả lại trong mục [columnName] ... –
Reed, bạn có thể đưa ra ví dụ không? – spender
Tôi thành thật không nghĩ rằng điều này sẽ làm việc. Vì vậy, đối với lợi ích của đối số, làm thế nào bạn có thể gọi một cách rõ ràng một thực thi ToString trên một kiểu cây thừa kế cụ thể? –