汎用リポジトリ<T>クラスObjectDataSourceで使用したいクラスです。リポジトリ<T>は、DataAccessという別のプロジェクトに存在します。 this post from the MS newsgroups(関連部分は以下のコピー)によると:ObjectDataSourceでの汎用クラスの使用
内部的には、ObjectDataSourceのは タイプを取得するために、Type.GetType(文字列)を呼び出しているので、私たちはどのように の上Type.GetTypeに文書化ガイドラインに従う必要がありますgenericsを使用して型を取得します。あなたは に( `)バッククォートを使用する必要があることを学びます、ドキュメントから
http://msdn2.microsoft.com/en-us/library/w3f99sx1.aspx
をジェネリックを使用しているタイプの名前を表し:あなたはType.GetType上のMSDNライブラリを参照することができます。
また、アセンブリ名を型名文字列に指定する必要があります。 、
型名
オーケー= "TestObjectDataSourceAssembly.MyDataHandler`1 [可能System.String]、TestObjectDataSourceAssemblyを" 理にかなって:
だから、あなたの質問には、答えは次のようにタイプ名を使用することです。私はそれをしようとすると、しかし、ページが例外をスロー:
<asp:ObjectDataSource ID="MyDataSource" TypeName="MyProject.Repository`1[MyProject.MessageCategory],DataAccess" />
[InvalidOperationExceptionが:。ObjectDataSourceの 'MyDatasourceの' の型名プロパティで指定された型が見つかりませんでした]
好奇心の強いことは、これがページを表示しているときにのみ発生するということです。 VS2008デザイナーから「データソースの設定」ダイアログを開くと、ジェネリックリポジトリクラスのメソッドが正しく表示されます。 TypeName文字列をType.GetType()に渡すと、デバッグ中にも有効な型が返されます。だから何を与える?
<%Response.Write(typeof(YourClassName).AssemblyQualifiedName); %> –