2016年7月22日 星期五

將object的properties/fields取出

今天想寫一個自動把所有object(已實體化 instanced)中的member抽取出來的功能。抽取的目的是要將object的members全部放入一個List中,其他東西呼叫的時候可以直接呼叫List就好。但在coding的時候又可以有class memeber的防呆特性。

ex:
set(obj.aDraw.bRec);
而不是
set(obj.draws["a"]["b"])

set(obj.draws[draws1.a][draws2.b])
<-這方法也有防呆,但要針對每個class定義enum的draw1, draw2

範例code
//取得class的properties(抽象種類)
var properties = this.GetType().GetProperties();
                 
foreach (var thisProperty in properties)
{
//取得目前object的property
  var thisValue = thisProperty.GetValue(this);
  if (thisValue is ITargetType)
  {
//也可以做其他事情
    _uiElements.Add((ITargetType)thisValue);
  }
}

沒有留言:

張貼留言