【发布时间】:2010-12-31 14:58:58
【问题描述】:
有没有办法在 pococapsule 中提供枚举值作为方法参数而不使用工厂方法?
假设我有一个在其构造函数中采用枚举值的类
class A
{
A(myEnum val);
}
使用 Pococapsule xml 配置: 我想表达这样的话:
<bean id="A" class="A">
<method-arg type="MyEnum" value="MyEnum::Value1" />
</bean>
但是,由于 pococapsule 的基本类型仅包括内置类型,例如 short、char 等,这是不可能的。
我将如何使用 pococapsule 实例化 A 类?
我可以使用类似这样的工厂方法:
MyEnum GetMyEnumValue1()
{
return MyEnum::Value1;
}
<bean id="A" class="A">
<method-arg factory-method="GetMyEnumValue1" />
</bean>
这不是很实用。我必须为使用的每个枚举的每个可能值实现一个新的工厂方法。
有些人会争辩说 enum:s 不应该在构造函数或 setter 方法中传递,因为它是一个类做了很多事情的标志。是的我同意。但是,有很多第三方代码和 c++ 框架使用这种风格,所以我需要能够做到这一点。
编辑: 该问题已在 Pococapsule 的论坛上解决。在这种特定情况下,解决方法是让工厂方法执行所需的操作。它不像在 xml-config 文件中声明 enum-use 那样灵活,但它推动了项目向前发展。感谢柯的帮助。
【问题讨论】:
标签: c++ ioc-container poco