2017-08-09 11 views
-2

は私がRepeater内だと私は種類のそれはOnItemDataBoundを繰り返すが、これをやって、どのオブジェクトをチェックアウトしたいと思います:DataSourceからオブジェクトの型を取得するには?

public void RepeaterListato_OnItemDataBound(Object Sender, RepeaterItemEventArgs e) 
{ 
    Response.Write(repeaterListato.DataSource.GetType()); 
} 

それは、コレクション全体の型を返します。

System.Collections.Generic.List`1[BrLayer.Pagina] 

しませんBrLayer.Pagina。方法はありますか?

+1

[ジェネリッククラスまたはメソッドのメンバからTの型を取得する方法](https://stackoverflow.com/questions/557340/how-to-get-the-type-of- – derape

+1

@derape、リピータは必ずしもジェネリックコレクションにバインドされていないので、あなたの提案されたdupeは無効です。 – Joe

+1

なぜdownvotes?特に質問を改善する方法を説明するのに役立つコメントはありません。 – Joe

答えて

1

OnItemDataBoundイベントハンドラには、引数RepeaterItemEventArgs eがあります。

あなたが欲しい:e.Item.ItemTypeHeaderFooterSeparatorまたはPagerであればe.Item.DataItemはnullになりますことを

e.Item.DataItem.GetType() 

注意を。あなたのリピータにこれらの要素が含まれている場合は、nullをチェックするか、ItemTypeをチェックする必要があります。

DataSourceの各アイテムに対してOnItemDataBoundが呼び出され、一般的に、すべてのアイテムが同じタイプを持つという保証はないことに注意してください。

+0

typo:その 'e.Item.DataItem.GetType()'ありがとう – markzzz

+0

@markzzz - trueは修正されました。 – Joe

1

これは絶対にできます!ここでは作業例です:魔法が起こる場所

class Program 
{ 
    static List<string> MyGenericList = new List<string>(); 

    static void Main(string[] args) 
    { 
     Console.WriteLine($"My list class's type is: {MyGenericList.GetType()}, and its first generic argument is: {MyGenericList.GetType().GetGenericArguments()[0]}"); 
     Console.ReadLine(); 
    } 
} 

お知らせコールType.GetType().GetGenericArguments()に、それはです。元の型のすべての汎用引数の配列を返します。

関連する問題