Có cách nào để có phương thức trả về bất kỳ một trong số một số kiểu generic từ một phương thức không? Ví dụ, tôi có những điều sau đây:Loại trả về chung có thể thay đổi trong C#
public static T ParseAttributeValue<T>(this XElement element, string attribute)
{
if(typeof(T) == typeof(Int32))
{
return Int32.Parse(element.Attribute(attribute).Value);
}
if(typeof(T) == typeof(Double))
{
return Double.Parse(element.Attribute(attribute).Value);
}
if(typeof(T) == typeof(String))
{
return element.Attribute(attribute).Value;
}
if(typeof(T) == typeof(ItemLookupType))
{
return Enum.Parse(typeof(T), element.Attribute(attribute).Value);
}
}
(Đây chỉ là một mockup rất nhanh chóng, tôi nhận thức được rằng bất kỳ mã sản xuất sẽ cần phải được đáng kể kỹ hơn trong kiểm tra rỗng vv ...)
Nhưng trình biên dịch không thích nó, phàn nàn rằng Int32
không được chuyển đổi hoàn toàn thành T
(nó cũng không hoạt động với dàn diễn viên). Tôi có thể hiểu điều đó. Tại thời gian biên dịch nó không có cách nào để biết những gì T
là, nhưng tôi đang kiểm tra nó trước. Có anyway tôi có thể thực hiện công việc này?
không, '' chỉ là thông số loại. Bạn sử dụng loại không có dấu ngoặc vuông. –
Femaref
@Femaref - Điểm tốt. Đã rút câu hỏi. –
Nếu bạn lưu trữ giá trị dưới dạng Đối tượng, bạn có thể truyền giá trị đó. Cũng có thể việc nhập hàm là động có thể giúp bạn làm như vậy mà không cần một diễn viên. – MrWednesday