【发布时间】:2011-06-14 15:19:40
【问题描述】:
我在我的游戏中使用自定义属性来定义聚合组件之间的依赖关系。
[ComponentDependency(typeof(SomeDependentComponent))]class SomeComponent : Component {}
但是,这意味着我必须为要以这种方式添加的每个组件使用默认值。我希望能够做到:
[ComponentDependency(typeof(SomeDependentComponent), ctrParam1, ctrParam2...)]
并将这些直接输入Activator.CreateInstance(Type, object[]),但我得到了错误。我认为这与编译时间的属性有关。我对他们了解不多。
这可能吗?
编辑:如果我要使用参数,它可能看起来像:
[ComponentDependency(typeof(PositionalComponent), new Vector2(300, 300))]
【问题讨论】:
-
参数是什么?
-
听起来你最好使用像 NInject 或 Autofac 这样的依赖注入容器来处理这种事情,而不是尝试自己编写。
-
@mdm 目前正在查找 Ninject,这似乎是有道理的......有点。
-
我觉得这可能是一个新问题,但我看不出 DI 在这里会有什么好处。我可以只是了解这个概念,但我不知道看不到它是如何链接到这里的。我确定确实如此,但我只是没看到。
标签: c# attributes constructor parameter-passing custom-attributes