我有一個CheckBox和一個HtmlInputCheckBox。這些是Checked屬性是常見的。我想獲得已檢查屬性的值。 我會盡量使用反射,但我不想使用反射。示例代碼這樣,我可以組合兩個或更多具有共同屬性的類嗎?
<input type="checkbox" id="checkBoxHtml" runat="server" />
<asp:CheckBox ID="checkbox" runat="server" />
這些是在gridview中。
我可以在gridview中使用FindControl找到它們,但FindControl返回類型是Control。 所以我需要使用Cast來獲取選中的值。我想訪問的控件可以是不同的類型。例如,CheckBox或HtmlInputCheckBox等。因此,我想使用一種類型進行投射。
我想這種方式,
public interface ICommonClass
{
bool GetChecked();
}
public class NewCheckBox:CheckBox,ICommonClass
{
public bool GetChecked()
{
return Checked;
}
}
public class NewHtmlInputCheckBox:HtmlInputCheckBox,ICommonClass
{
public bool GetChecked()
{
return Checked;
}
}
var obj = (ICommonClass)gridview.FindControl("checkbox");
var obj = (ICommonClass)gridview.FindControl("checkboxHtml");
obj.GetChecked();
此代碼不會運行。因爲它會在投射時發生錯誤。正確的,這已經:)我給了這個例子,我告訴我的想法。這樣的事情可以做到嗎?
製作GetChecked抽象所以每一個派生類需要推導一個GetChecked方法(只改進,而不是解決問題的辦法)。 – 2012-03-02 09:27:52
FindControl可能返回某種類型...您需要使用與FindControl的返回類型相同的類型派生ICommonClass – 2012-03-02 09:28:57