有没有办法提供枚举值作为方法参数在pococapsule而不诉诸工厂方法?使用枚举与Pococapsule(C++ IoC容器)
让说我有采取枚举值在其构造
class A
{
A(myEnum val);
}
使用Pococapsule xml配置类: 我想表达的是这样的:
<bean id="A" class="A">
<method-arg type="MyEnum" value="MyEnum::Value1" />
</bean>
然而,由于pococapsule的基本类型只包括内置类型,如短,字符等,这是不可能的。
我会如何使用pococapsule实例化一个类A?
我可以诉诸使用工厂方法是这样的:
MyEnum GetMyEnumValue1()
{
return MyEnum::Value1;
}
<bean id="A" class="A">
<method-arg factory-method="GetMyEnumValue1" />
</bean>
这是不是很实用。我将不得不为每个使用的枚举的每个可能的值实施新的工厂方法。
有些人会认为枚举:不应该在构造函数或setter方法中传递,因为它是一个类实现的标志。是的我同意。但是,有很多第三方代码和C++框架使用这种风格,所以我需要能够做到这一点。
编辑: 的问题已在Pococapsule的论坛解决。在这个特定情况下的解决方法是让工厂方法执行所需的操作。它不像在xml-config文件中声明enum-use那样灵活,但它将项目向前移动。感谢柯的帮助。
谢谢你的回复金柯, 我试图抓住你,但找不到PocoCapsule网站上的电子邮件,也不能在您的博客。 我试图使用它的真实世界的情况是一个框架,它具有与几个不同的枚举重载相同的方法。使用关于使用long的建议不起作用,因为编译器发现错误的重载方法。 如果你有时间,我会很感激,如果你可以通过电子邮件与我联系:z [at] consoft.se。 我觉得这个问题可能太复杂,无法通过此处的讨论来解决(找到正确答案后会发布)。 – Zen 2010-01-09 12:27:21