コード例 #1
0
ファイル: Hierarchy.cs プロジェクト: RandomLyrics/Colony
        internal static IEnumerable <PropertyInfo> GetProperties(IShareable obj)
        {
            var type = obj.GetType();

            if (!_classProperties.ContainsKey(type))
            {
                _classProperties[type] = type.GetProperties().Where(p => (typeof(IShareable).IsAssignableFrom(p.PropertyType)));
            }
            return(_classProperties[type]);
        }
コード例 #2
0
 internal static void Build(IShareable obj, Cache cache)
 {
     foreach (var prop in GetProperties(obj.GetType()))
     {
         if (!cache.ContainsKey(prop.PropertyType))
         {
             IShareable shareable = New(prop.PropertyType);
             cache[prop.PropertyType] = shareable;
             Build(shareable, cache);
         }
         SetPropertyValue(obj, prop, cache[prop.PropertyType]);
         prop.SetValue(obj, cache[prop.PropertyType]);
     }
 }