在自定义属性中使用\'new SomeObject\'

| 我在游戏中使用自定义属性,以允许我定义聚合组件之间的依赖关系。
[ComponentDependency(typeof(SomeDependentComponent))]
class SomeComponent : Component {}
但是,这意味着我必须对要以此方式添加的每个组件使用默认值。我希望能够做到:
[ComponentDependency(typeof(SomeDependentComponent), ctrParam1, ctrParam2...)]
并将它们直接输入
Activator.CreateInstance(Type, object[])
,但是我得到了错误。我认为这与属性在编译时有关。我对他们不太了解。 这可能吗? 编辑:如果我要使用参数,它可能看起来像:
[ComponentDependency(typeof(PositionalComponent), new Vector2(300, 300))]
    
已邀请:
        你不能。 将属性编译为程序集中的元数据。 属性参数只能是基元或“ 5”对象。     
        正如SLaks所说,这是行不通的。您尝试构建的称为“依赖注入”,这是一种功能强大且越来越流行的模式。有很多为.NET构建的依赖注入框架-我建议对它们进行一些研究,然后选择一种-它们具有机制(通常是XML配置文件)来处理您要尝试做的事情。     
        您无法更改属性的参数,因为它们已编译并存储在程序集元数据中。 您可以在组件上实现一个接口,例如IDependantComponent,并在创建它后调用SetDependencies。     

要回复问题请先登录注册