示例#1
0
        public void SaveGeneric <T, TOut>(T value, bool saveAttachedFile = true) where T : BaseEntityObject, new() where TOut : BaseEntity, new()
        {
            if (_casEnvironment.IdentityUser.UserType == UsetType.ReadOnly)
            {
                return;
            }

            if (!typeof(TOut).IsSubclassOf(typeof(BaseEntity)))
            {
                throw new ArgumentException("T", "не является наследником " + typeof(BaseEntity).Name);
            }

            if (!typeof(T).IsSubclassOf(typeof(BaseEntityObject)))
            {
                throw new ArgumentException("TOut", "не является наследником " + typeof(BaseEntityObject).Name);
            }

            var method = GetMethod(typeof(T), "Convert");
            var res    = InvokeConverter <T, TOut>(value, method);
            var newId  = _apiProvider.Save(res);

            value.ItemId = newId;

            if (value is IFileContainer && saveAttachedFile)
            {
                SaveAttachedFile(value as IFileContainer);
            }

            if (value is IFileDTOContainer && saveAttachedFile)
            {
                SaveAttachedFileDTO(value as IFileDTOContainer);
            }
        }