Проблема с Xiaomi Если возможно, обновите MIUI до последней версии, перейдите в «Настройки»> «Дополнительные настройки»> «Параметры разработчика»> «Параметры разработчика»: установите флажок «Установить через USB».
Это решило мою проблему, надеюсь, решите вашу удачу!
Править: Используемый ответы ниже кода с Быстрым Интерфейсом :)
namespace WindsorSample
{
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;
public class MyComponent : IMyComponent
{
public MyComponent(int start_at)
{
this.Value = start_at;
}
public int Value { get; private set; }
}
public interface IMyComponent
{
int Value { get; }
}
[TestFixture]
public class ConcreteImplFixture
{
[Test]
void ResolvingConcreteImplShouldInitialiseValue()
{
IWindsorContainer container = new WindsorContainer();
container.Register(
Component.For<IMyComponent>()
.ImplementedBy<MyComponent>()
.Parameters(Parameter.ForKey("start_at").Eq("1")));
Assert.That(container.Resolve<IMyComponent>().Value, Is.EqualTo(1));
}
}
}
Необходимо передать в IDictionary, когда Вы просите у контейнера экземпляр.
Вы использовали бы эту перегрузку Твердости IWindsorContainer:
T Resolve<T>(IDictionary arguments)
или не универсальный:
object Resolve(Type service, IDictionary arguments)
Так, например: (принятием контейнера является IWindsorContainer),
IDictionary<string, object> values = new Dictionary<string, object>();
values["start_at"] = 1;
container.Resolve<IMyComponent>(values);
Обратите внимание, что значения ключа в словаре чувствительны к регистру.
Вы рассмотрели использование Binsor для конфигурирования контейнера? Вместо подробного и неуклюжего XML можно настроить Виндзор с помощью Шиканья базирующийся DSL. Вот то, на что будет похожа Ваша конфигурация:
component IMyComponent, MyComponent:
start_at = 1
Преимущество состоит в том, что Вы имеете покорный файл конфигурации, но избегаете проблем с XML. Также Вы не должны перекомпилировать для изменения конфигурации, как Вы были бы при конфигурировании контейнера в коде.
Существует также много вспомогательных методов, которые включают нулевую конфигурацию трения:
for type in Assembly.Load("MyApp").GetTypes():
continue unless type.NameSpace == "MyApp.Services"
continue if type.IsInterface or type.IsAbstract or type.GetInterfaces().Length == 0
component type.GetInterfaces()[0], type
Можно начать с ним здесь.
Можно использовать метод AddComponentWithProperties интерфейса IWindsorContainer для регистрации сервиса в расширенных свойствах.
Ниже 'рабочий' образец выполнения этого с Модульным тестом NUnit.
namespace WindsorSample
{
public class MyComponent : IMyComponent
{
public MyComponent(int start_at)
{
this.Value = start_at;
}
public int Value { get; private set; }
}
public interface IMyComponent
{
int Value { get; }
}
[TestFixture]
public class ConcreteImplFixture
{
[Test]
void ResolvingConcreteImplShouldInitialiseValue()
{
IWindsorContainer container = new WindsorContainer();
IDictionary parameters = new Hashtable {{"start_at", 1}};
container.AddComponentWithProperties("concrete", typeof(IMyComponent), typeof(MyComponent), parameters);
IMyComponent resolvedComp = container.Resolve<IMyComponent>();
Assert.That(resolvedComp.Value, Is.EqualTo(1));
}
}
}