讓我解釋一下。我有一個列表,我添加了各種ASP.NET控件。 然後,我希望遍歷列表並設置一個CssClass,但不是每個控件都支持屬性CssClass。當我不知道類型時,是否可以在僅在實例類型上聲明的對象上設置屬性?
我想要做的是測試底層實例類型是否支持CssClass屬性並對其進行設置,但我不確定如何在設置屬性之前進行轉換,因爲我不知道類型每個控制對象。
我知道我可以使用typeof或x.GetType(),但我不知道如何使用它們將控件轉換回實例類型以便測試並設置屬性。
其實我似乎已經解決了這一點,所以我想我會在這裏發佈的代碼爲別人着想。
foreach (Control c in controlList) {
PropertyInfo pi = c.GetType().GetProperty("CssClass");
if (pi != null) pi.SetValue(c, "desired_css_class", null);
}
我希望這可以幫助別人,因爲我花了數小時研究這兩行代碼。
乾杯
史蒂夫
出於好奇 - 過了很久才找到答案? – 2009-11-04 23:18:26
良好的工作。發佈它作爲答案史蒂夫。 – 2009-11-04 23:19:26
花了這麼長時間不知道從哪裏開始以及要搜索什麼。 我花了很長時間試圖找到一種方法將對象轉換回其實例類型,但我找不到如何聲明將保存該類型的變量,因爲我不知道它是類型的。 也許有人可以告訴我如何做到這一點? – WilberBeast 2009-11-05 00:14:24