标签: constructorargument

我可以使用具有强命名的Ninject ConstructorArguments吗?

好吧,我不知道"强命名"是否是正确的术语,但我想做的是如下.

目前我使用ConstructorArgument,例如:

public class Ninja
{
    private readonly IWeapon _weapon;
    private readonly string _name;

    public Ninja(string name, IWeapon weapon)
    {
        _weapon = weapon;
        _name = name;
    }
    // ..more code..
}

public void SomeFunction()
{
    var kernel = new StandardKernel();
    kernel.Bind<IWeapon>().To<Sword>();
    var ninja = kernel.Get<Ninja>(new ConstructorArgument("name", "Lee"));
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我重命名参数"name"(例如使用ReSharper),ConstructorArgument将不会更新,并且在创建Ninja时我将收到运行时错误.要解决这个问题,我需要手动查找我通过ConstructorArgument指定此参数的所有位置并更新它.没有好处,即使我有很好的测试覆盖率,我注定会在某些时候失败.重命名应该是一个廉价的操作.

有没有什么方法可以引用参数 - 这样当我重命名参数时它会被更新?

.net refactoring naming ninject constructorargument

8
推荐指数
1
解决办法
679
查看次数

为什么我不能用Ninjects ConstructorArgument注入值null?

使用Ninjects ConstructorArgument时,您可以指定要注入特定参数的确切值.为什么这个值不能为null,或者我怎样才能使它工作?也许这不是你想做的事情,但我想在我的单元测试中使用它.例如:

public class Ninja
{
    private readonly IWeapon _weapon;
    public Ninja(IWeapon weapon)
    {
        _weapon = weapon;
    }
}

public void SomeFunction()
{
    var kernel = new StandardKernel();
    var ninja = kernel.Get<Ninja>(new ConstructorArgument("weapon", null));
}
Run Code Online (Sandbox Code Playgroud)

.net ninject ioc-container ninject-2 constructorargument

5
推荐指数
1
解决办法
848
查看次数

如何使用注释对Spring执行基于构造函数的依赖注入?

好的,所以如果我需要在构造函数中放入一些原始值,我该怎么做?

    @Autowired
public CustomBean(String name, @Qualifier("SuperBean") SuperBean superBean) {
    super();
    this.superBean = superBean;
    this.name = name;
}
Run Code Online (Sandbox Code Playgroud)

例如,我在这里定义superBean有限定符"SuperBean",但我也想知道如何使用注释在这里设置名称值?

我知道有可能使用xml配置,但我想知道如何使用注释执行此操作:

<bean id="CustomXmlBean" class="org.arturas.summerfav.beans.CustomXmlBean">
        <constructor-arg name="name" type="String" value="The Big Custom XML Bean" />
        <constructor-arg>
            <bean id="SuperBean" class="org.arturas.summerfav.beans.SuperBean" />
        </constructor-arg>
    </bean>
Run Code Online (Sandbox Code Playgroud)

那么我如何为String,int和其他泛型类型输入值?

java spring dependency-injection spring-annotations constructorargument

3
推荐指数
1
解决办法
4477
查看次数

无法访问类中声明的私有成员

这是我在这里的第一个问题:)我有一点问题..这些是我的课程:

class Gracz{
    char znak_gracza;
public:
    Gracz();
    Gracz(char znak){
            this->znak_gracza = znak;
        };
    friend void multiplayer();
};
class Osoba: public Gracz{
public:
    Osoba();
    Osoba(char znak){
            this->znak_gracza = znak;
        };
    friend void multiplayer();
};
Run Code Online (Sandbox Code Playgroud)

我也有一个功能多人游戏,我尝试使用构造函数与参数:

void multiplayer(){
    Osoba gracz1('O');
    Osoba gracz2('X');
...
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

错误是一样的gracz1,并gracz2

error C2248: 'Gracz::znak_gracza' : cannot access private member declared in class 'Gracz'
see declaration of 'Gracz::znak_gracza'
see declaration of 'Gracz'
Run Code Online (Sandbox Code Playgroud)

c++ constructor class constructorargument

1
推荐指数
2
解决办法
6954
查看次数