示例#1
0
        /// <summary>
        /// Registers a delegate to retrieve instances of the specified type.
        /// </summary>
        public PocketContainer Register <T>(Func <PocketContainer, T> factory)
        {
            var replaced = (Func <PocketContainer, object>)Registering?.Invoke(typeof(T), factory);

            if (replaced != null)
            {
                factory = c => (T)replaced(c);
            }

            resolvers[typeof(T)]        = c => factory(c);
            resolvers[typeof(Lazy <T>)] = c => new Lazy <T>(c.Resolve <T>);
            return(this);
        }
示例#2
0
 private async void newRegistrationSent(IAsyncOperation <uint> info, AsyncStatus status)
 {
     if (status == AsyncStatus.Completed)
     {
         Registering?.Invoke();
         await ListenForRegistrationResponse();
     }
     else
     {
         RegistrationFailed?.Invoke();
         ConnectionState = TvConnectionState.Disconnected;
     }
 }
示例#3
0
        /// <summary>
        /// Resolves an instance of the specified type.
        /// </summary>
        public T Resolve <T>()
        {
            var resolved = (T)resolvers.GetOrAdd(typeof(T), _ =>
            {
                var implicitResolver = ImplicitResolver <T>();

                if (Registering?.Invoke(typeof(T), implicitResolver) is Func <PocketContainer, object> replacedResolver)
                {
                    implicitResolver = c => (T)replacedResolver(c);
                }

                return(implicitResolver);
            })(this);

            return(CallAfterResolve(typeof(T), resolved, out var replaced)
                       ? (T)replaced
                       : resolved);
        }
示例#4
0
        /// <inheritdoc />
        /// <summary>
        ///     Registers the specified character spawn.
        /// </summary>
        /// <param name="characterSpawn">The character spawn.</param>
        public void Register(ICharacterSpawn characterSpawn)
        {
            if (Members.ContainsKey(characterSpawn.Id))
            {
                return;
            }

            ChannelRegisteringEventArgs channelRegisteringEventArgs = new ChannelRegisteringEventArgs(characterSpawn);

            Registering?.Invoke(this, channelRegisteringEventArgs);
            if (channelRegisteringEventArgs.Cancel)
            {
                return;
            }

            Members.Add(characterSpawn.Id, characterSpawn);

            ChannelRegisteredEventArgs channelRegisteredEventArgs = new ChannelRegisteredEventArgs(characterSpawn);

            Registered?.Invoke(this, channelRegisteredEventArgs);
        }
示例#5
0
        /// <summary>
        /// RegisterType a type mapping with the container, where the created instances will use
        /// the given <see cref="LifetimeManager"/>.
        /// </summary>
        /// <param name="typeFrom"><see cref="Type"/> that will be requested.</param>
        /// <param name="typeTo"><see cref="Type"/> that will actually be returned.</param>
        /// <param name="name">Name to use for registration, null if a default registration.</param>
        /// <param name="lifetimeManager">The <see cref="LifetimeManager"/> that controls the lifetime
        /// of the returned instance.</param>
        /// <param name="injectionMembers">Injection configuration objects.</param>
        /// <returns>The <see cref="UnityContainer"/> object that this method was called on (this in C#, Me in Visual Basic).</returns>
        public IUnityContainer RegisterType(Type typeFrom, Type typeTo, string name, LifetimeManager lifetimeManager, InjectionMember[] injectionMembers)
        {
            // Validate imput
            var to = typeTo ?? throw new ArgumentNullException(nameof(typeTo));

            if (typeFrom != null && !typeFrom.GetTypeInfo().IsGenericType&& !to.GetTypeInfo().IsGenericType)
            {
                if (!typeFrom.GetTypeInfo().IsAssignableFrom(to.GetTypeInfo()))
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
                                                              Constants.TypesAreNotAssignable, typeFrom, to), nameof(typeFrom));
                }
            }

            // Register type
            var registration = new TypeRegistration(typeFrom, typeTo, name, lifetimeManager, injectionMembers);

            var old = SetOrUpdate(registration.RegisteredType, registration.Name, registration);

            if (old is IDisposable disposable)
            {
                _lifetimeContainer.Remove(disposable);
                disposable.Dispose();
            }

            Registering?.Invoke(this, new RegisterEventArgs(registration.RegisteredType, registration.MappedToType, registration.Name, registration.LifetimeManager));

            if (null != injectionMembers && injectionMembers.Length > 0)
            {
                var proxy = new PolicyListProxy(_context, registration);
                foreach (var member in injectionMembers)
                {
                    member.AddPolicies(registration.RegisteredType, registration.MappedToType, registration.Name, proxy);
                }
            }

            return(this);
        }
示例#6
0
 /// <summary>
 /// Called by the container when the service type is registering.
 /// </summary>
 /// <param name="e">The event argument.</param>
 protected virtual void OnRegistering(ServiceRegisterEventArgs e)
 {
     Registering?.Invoke(this, e);
 }
示例#7
0
        private void BtnEditAdd_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                int type = 0;
                int num  = Convert.ToInt32(TxtNum.Text);
                var q    = Context.Students.SingleOrDefault(i => i.StuNumber == num && !i.isDeleted);
                if (ComType.Text == "تسجيل كمستجد")
                {
                    type = 0;
                }
                else if (ComType.Text == "إيقاف التسجيل")
                {
                    type = 1;
                }
                else
                {
                    type = 2;
                }


                if (BtnEditAdd.IsChecked == true)
                {
                    try
                    {
                        Registering = new Registering
                        {
                            RegDate   = Convert.ToDateTime(DpReg.Text),
                            StudentId = q.Id,
                            RegType   = type
                        };
                        Context.Registerings.Add(Registering);
                    }
                    catch
                    {
                        MessageBox.Show(" عذراً ! هناك خطأ في الرقم الجامعي ", "", MessageBoxButton.OK, MessageBoxImage.Error);
                        BtnEditAdd.IsChecked = false;
                        return;
                    }
                }
                else
                {
                    try
                    {
                        var queryUpdate = Context.Registerings.SingleOrDefault(i => !i.isDeleted && i.Id == EditID);
                        queryUpdate.StudentId = q.Id;
                        queryUpdate.RegDate   = Convert.ToDateTime(DpReg.Text);
                        queryUpdate.RegType   = type;
                    }
                    catch
                    {
                        MessageBox.Show(" عذراً ! هناك خطأ في الرقم الجامعي ", "", MessageBoxButton.OK, MessageBoxImage.Error);
                        BtnEditAdd.IsChecked = true;
                        return;
                    }
                }

                TxtNum.Text          = "";
                DpReg.Text           = "";
                ComType.Text         = "";
                BtnEditAdd.IsChecked = false;
                Context.SaveChanges();
                Load();
            }
            catch
            {
            }
        }
示例#8
0
        public ActionResult Register(Registering registering)
        {
            if (registering != null)
            {
                using (var db = new MyDbContext())
                {
                    if (string.IsNullOrWhiteSpace(registering.Email) || string.IsNullOrWhiteSpace(registering.Password) || string.IsNullOrWhiteSpace(registering.ConfirmPassword))
                    {
                        registering.OutcomeOfCheckRegistration = "SomeNullInput";
                        return(View("RegisterPage", registering));
                    }
                    var query = from b in db.ClientsTable
                                orderby b.ClientId
                                select b;

                    var  testEmailAddress = new EmailAddressAttribute();
                    bool emailIsValid     = testEmailAddress.IsValid(registering.Email);

                    bool isNewEmail = true;
                    foreach (var item in query)
                    {
                        if (item.Email.Equals(registering.Email))
                        {
                            isNewEmail = false;
                        }
                    }

                    if (emailIsValid)
                    {
                        if (isNewEmail)
                        {
                            if (registering.Password == registering.ConfirmPassword)
                            {
                                var newClient = new Client
                                {
                                    Email    = registering.Email,
                                    Password = registering.Password
                                };
                                db.ClientsTable.Add(newClient);
                                db.SaveChanges();
                                registering.OutcomeOfCheckRegistration = "Passed";
                                return(View("RegisterPage", registering));
                            }
                            else
                            {
                                registering.OutcomeOfCheckRegistration = "Confirm Password need to match Password";
                                return(View("RegisterPage", registering));
                            }
                        }
                        else
                        {
                            registering.OutcomeOfCheckRegistration = "Sorry, that username's taken. Try another?";
                            return(View("RegisterPage", registering));
                        }
                    }
                    else
                    {
                        registering.OutcomeOfCheckRegistration = "Invalid Email";
                        return(View("RegisterPage", registering));
                    }
                }
            }
            else
            {
                return(null);
            }
        }
示例#9
0
        public ActionResult RegisterPage()
        {
            var registering = new Registering();

            return(View(registering));
        }