Czy istnieje sposób, aby metoda zwróciła jeden z wielu typów ogólnych z metody? Na przykład, mam następujący:Zmienna rodzajowy typ zwrotu w języku 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);
}
}
(Jest to tylko bardzo szybkie makieta, jestem świadomy, że każdy kod produkcja musiałaby być znacznie bardziej dokładny w kontroli zerowych etc ...)
Ale kompilator tego nie lubi, narzekając, że Int32
nie może zostać niejawnie przekonwertowany na T
(nie działa również z rzutowaniem). Mogę to zrozumieć. W czasie kompilacji nie ma możliwości dowiedzenia się, co to jest T
, ale sprawdzam to wcześniej. Czy mimo to mogę to wykonać?
Nie, '' jest tylko parametrem typu. Używasz tego typu bez nawiasów. –
Femaref
@Femaref - Dobra uwaga. Pytanie wycofane. –
Jeśli przechowujesz wartość jako Obiekt, możesz ją przesłać. Jest również możliwe, że wpisanie funkcji jako dynamicznej może pomóc w wykonaniu tego zadania bez rzutowania. – MrWednesday