インターフェイスを取る List<> を取る gridview がある C# Web アプリがあります。リスト内にあるインターフェイスを実装する 3 つのオブジェクト タイプがあります。
gridviews データソースをリストに設定し、databind を呼び出します。アプリを実行すると、次のエラーが表示されます。
{"Property accessor 'Name' on object 'Bailey.Objects.Company' threw the following exception:'Object does not match target type.'"}
リスト内のオブジェクトの順序を変更したところ、最初のオブジェクト タイプは問題なく動作することがわかりましたが、別のオブジェクトの最初のインスタンスが見つかると、このエラーがスローされます。
List<IBaileyObject> listToDisplay = listofItems;
GridViewItemList.DataSource = listToDisplay;
GridViewItemList.DataBind();
私が望んでいたのは、データソースとバインディングが、実際に起こっているように見えるようにオブジェクトにキャストするのではなく、インターフェースにとどまることでした。
これは、List<> がオブジェクトをインターフェイスではなくそれ自体として返しているためですか、それともグリッドビューにキャストされているものですか?
それとも間違った道を進んでいますか?
誰かがこれを修正する方法を持っていることを願っています。
ありがとう
ジョン・ホーキンス
編集
<asp:TemplateField HeaderText="Selected">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkbox" Width="10%" Enabled="true" AutoPostBack="false" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ID" HeaderText="ID" Visible="False" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="TypeName" HeaderText="Type" />
</Columns>
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#E3EAEB" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#7C6F57" />
<AlternatingRowStyle BackColor="#F8F8F8" />
インターフェイスは、Name、ID、および TypeName を公開します。
" HeaderText="ID" Visible="False" />
Gives はインデクサーを適用できません。