1

リフレクションを使用して、CssStyleCollectionクラスのプロパティ(特に、Key-Valueコレクションに興味があります)にアクセスするにはどうすればよいですか?

// this code runns inside class that inherited from WebControl
PropertyInfo[] properties = GetType().GetProperties();

//I'am not  able to do something like this
  foreach (PropertyInfo property in properties)
  {
     if(property.Name == "Style")
     {
        IEnumerable x = property.GetValue(this, null) as IEnumerable;
        ...
     }
  }
4

1 に答える 1

3

Styleリフレクションを介してプロパティを取得するための構文は次のとおりです。

PropertyInfo property = GetType().GetProperty("Style");
CssStyleCollection styles = property.GetValue(this, null) as CssStyleCollection;
foreach (string key in styles.Keys)
{
    styles[key] = ?
}

CssStyleCollectionIEnumerableを実装していない(インデックス演算子を実装している)ため、それにキャストできないことに注意してください。styles.KeysIEnumerableを取得する場合は、、および値を使用してキーを抽出できます。

IEnumerable<string> keys = styles.Keys.OfType<string>();
IEnumerable<KeyValuePair<string,string>> kvps 
    = keys.Select(key => new KeyValuePair<string,string>(key, styles[key]));
于 2012-12-23T00:33:37.800 に答える