コード例 #1
0
        public JsonNextLinkConverter()
        {
            var collectionType = typeof(T);

            _reader = ReadAccessor.Create(collectionType, AccessorMemberTypes.Properties, AccessorMemberScope.Public, out _members);
            _writer = WriteAccessor.Create(collectionType, AccessorMemberTypes.Properties, AccessorMemberScope.Public);
        }
コード例 #2
0
        public DocumentDbRepository(string slot, IOptionsMonitor <DocumentDbOptions> options,
                                    ISafeLogger <DocumentDbRepository <T> > logger)
        {
            _reads   = ReadAccessor.Create(typeof(T));
            _writes  = WriteAccessor.Create(typeof(T));
            _slot    = slot;
            _options = options;
            _logger  = logger;

            var defaultSettings   = new JsonSerializerSettings();
            var documentDbOptions = options.Get(_slot);

            _client = new DocumentClient(EndpointUri, documentDbOptions.AccountKey, defaultSettings);


            _client2 = new CosmosClient(EndpointUri.ToString(), documentDbOptions.AccountKey,
                                        new CosmosClientOptions
            {
                AllowBulkExecution = true,
                ConnectionMode     = ConnectionMode.Gateway,
                MaxRetryAttemptsOnRateLimitedRequests = 100
            });

            CreateDatabaseIfNotExistsAsync().Wait();
            CreateCollectionIfNotExistsAsync().Wait();
        }
コード例 #3
0
 public JsonMergePatch(Type type)
 {
     _reads   = ReadAccessor.Create(type, AccessorMemberTypes.Properties, AccessorMemberScope.Public, out _members);
     _writes  = WriteAccessor.Create(type);
     _data    = Activator.CreateInstance <T>();
     _changed = new HashSet <string>();
 }
コード例 #4
0
ファイル: PropertyAccessor.cs プロジェクト: qiqi545/HQ
        public PropertyAccessor(ITypeReadAccessor reads, ITypeWriteAccessor writes, string name)
        {
            var members = AccessorMembers.Create(reads.Type, AccessorMemberTypes.Properties);

            Info = members.PropertyInfo.Single(m => m.Name == name);

            Type = Info.PropertyType;
            Name = name;

            _reads  = reads;
            _writes = writes;
        }
コード例 #5
0
        public PropertyAccessor(ITypeReadAccessor reads, ITypeWriteAccessor writes, Type type, string name)
        {
            Type = type;
            Name = name;

            _reads  = reads;
            _writes = writes;

            var members = AccessorMembers.Create(type);

            Info = members.PropertyInfo.SingleOrDefault(m => m.Name == name);

            var member = members.SingleOrDefault(p => p.Name == name);

            if (member == null)
            {
                return;
            }
            _member = member;
        }
コード例 #6
0
 public JsonDeltaConverter()
 {
     _reader = ReadAccessor.Create(typeof(T), AccessorMemberTypes.Properties, AccessorMemberScope.Public, out _members);
     _writer = WriteAccessor.Create(typeof(T), AccessorMemberTypes.Properties, AccessorMemberScope.Public);
 }
コード例 #7
0
        private static void SetMembers(IConfiguration configuration, object instance, BinderOptions options,
                                       AccessorMembers members, ITypeReadAccessor read, ITypeWriteAccessor write,
                                       IEnumerable <ICustomConfigurationBinder> customBinders)
        {
            foreach (var member in members)
            {
                // We don't support set only, non-public, or indexer properties
                if (!member.CanRead || member.MemberInfo is MethodInfo method && method.GetParameters().Length > 0)
                {
                    continue;
                }

                var value = read[instance, member.Name];
                if (value == null && !member.CanWrite)
                {
                    // Property doesn't have a value and we cannot set it so there is no
                    // point in going further down the graph
                    continue;
                }

                var config = configuration.GetSection(member.Name);
                value = BindInstance(member.Type, value, config, options, customBinders);
                if (value == default || !member.CanWrite)
                {
                    continue;
                }

                write.TrySetValue(instance, member.Name, value);
            }
        }