コード例 #1
0
        /// <summary>
        /// Get entity properties
        /// </summary>
        /// <param name="entityType"></param>
        /// <returns></returns>
        public static PropertyInfo[] GetOrAdd(TypeInfo entityType)
        {
            var properties = GlobalPropertiesCache.GetOrAdd(entityType.AsType().TypeHandle, key =>
                                                            (from p in entityType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                                                             where !p.IsNotDatabaseField() && p.GetSetMethod(true) != null && p.GetGetMethod(true) != null
                                                             select p).ToDictionary(p => p.Name));

            return(properties.Values.ToArray());
        }
コード例 #2
0
        public static PropertyInfo[] GetOrAdd(Type entityType)
        {
            var properties = GlobalPropertiesCache.GetOrAdd(entityType.TypeHandle, key =>
                                                            (from p in entityType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                                                             let attr = p.GetCustomAttribute(typeof(NotDatabaseFieldAttribute))
                                                                        let attrSetting = p.GetCustomAttribute(typeof(DatabaseFieldAttribute))
                                                                                          where attr == null &&
                                                                                          !(attrSetting != null && !((DatabaseFieldAttribute)attrSetting).Ignore) &&
                                                                                          p.GetSetMethod(true) != null && p.GetGetMethod(true) != null
                                                                                          select p).ToDictionary(p => p.Name));

            return(properties.Values.ToArray());
        }
コード例 #3
0
 public override CXXPropertyInfo Create(CXXTypeInfo declaringType, System.Reflection.PropertyInfo propertyInfo)
 {
     return(PropertyCache.GetOrAdd(propertyInfo, p => new CXXPropertyInfo(this, declaringType, p)));
 }
コード例 #4
0
 /// <summary>
 /// 获取指定配置键的配置项
 /// </summary>
 /// <param name="key">配置键</param>
 /// <param name="config">配置的参数</param>
 /// <returns>配置项</returns>
 public IProperty <T> GetProperty <T>(string key, PropertyConfig <T> config)
 {
     ParameterChecker.NotNullOrWhiteSpace(key, "key");
     return((IProperty <T>)PropertyCache.GetOrAdd(key, NewProperty <T>(key, config)));
 }
コード例 #5
0
 public override UnrealPropertyInfo Create(UnrealTypeInfo declaringType, PropertyInfo propertyInfo)
 {
     return(PropertyCache.GetOrAdd(propertyInfo, p => new UnrealPropertyInfo(this, declaringType, p)));
 }