2010-12-01 7 views
0

RadGridコントロールを使用して、Hibernateを使用してオブジェクトを取得するリポジトリからUserオブジェクトを取得しています。次のようにGETALLのためのメソッドのシグネチャがTelerik RadGridバインディング間違ったオブジェクトタイプを想定する

<asp:ObjectDataSource ID="UsersData" runat="server" SelectMethod="GetAll" DataObjectTypeName="TestingApp.Lib.Domain.User" TypeName="TestingApp.Lib.Repositories.UserRepository"> 
</asp:ObjectDataSource> 

:Iのように定義されたオブジェクト・データ・ソースを使用してい

public IEnumerable<User> GetAll(); 

NHibernateのでは、一部のユーザーは、実際にユーザを拡張アクセスadminusersあります。リポジトリがAdminUserオブジェクトを最初に返しているようで、コントロールは、残りのオブジェクトがUserではなくAdminUserであると仮定しているようです。これは、次の例外がスローされます:

"Unable to cast object of type 'TestingApp.Lib.Domain.User' to type 'TestingApp.Lib.Domain.AdminUser'." 

は、データバインドされたオブジェクトを前提とする制御を強制する方法は、ユーザーがADMINUSERではなく、そこにされますか?ありがとう!


フォローアップ

RadGridに互換性がないと動作しません、このようにNHibernateはを使用していることが表示されます。代わりに独自のソリューションを導入することに決めました。

+0

どのバージョンの.netフレームワークを使用していますか? – jvanrhyn

+0

.NET 3.5を使用しています。ありがとう –

答えて

0

MagicTableView.RetrieveDataTypeFromFirstItemを実行して、これが役立つかどうかを確認します。あなたの場合はfalseに設定するか、trueに設定した場合、コレクションの最初の項目はUser型でなければなりません(AdminUserがUserクラスを継承している場合)。