メソッドがメソッドからいくつかのジェネリック型を返す方法はありますか?例えば、私は次のようしている: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);
}
}
(これは非常に迅速なモックアップで、私はすべての製品コードがnullチェックなどで大幅により徹底する必要があると承知している...)
しかし、コンパイラはInt32
を暗黙的にT
に変換することはできないという不満を持っています(どちらもキャストでは機能しません)。私はそれを理解することができます。コンパイル時にはT
が何であるかを知る方法がありませんが、私は事前にチェックしています。とにかく私はこの仕事をすることができますか?
いいえ、 ''はタイプパラメータのみです。ブラケットを使用しないタイプを使用します。 –
Femaref
@Femaref - 良い点。質問は取り下げられた。 –
値をObjectとして格納すると、その値をキャストできます。また、関数を動的にタイプすると、キャストなしでそのようにすることもできます。 – MrWednesday