【问题标题】:Passing object instance data to Attribute将对象实例数据传递给属性
【发布时间】:2009-12-27 10:27:20
【问题描述】:

我想将某些数据从一个对象的实例传递给它的属性,但我很难理解如何实现它。这是一个示例:

[AuthenticateAttribute]
public class MyController: Controller
{
    UserInfo info;
}

这个想法是 AuthenticateAttribute 实例将填充 UserInfo 实例。

我想将对info 的引用传递给AuthenticateAttribute 的实例,从而消除属性与特定MyController 类之间的强耦合。

这可能吗?

【问题讨论】:

    标签: asp.net-mvc class-attributes


    【解决方案1】:

    属性本身不应具有 UserInfo 字段 IMO。请记住,它所应用的 type 属性将有一个实例 - 而不是该类型的每个实例都有一个。

    如果你能给出一个更完整的例子(展示它所应用的代码),我们可能会提供更多帮助......

    【讨论】:

    • 这对我来说是非常新的消息,谢谢。这是否意味着如果需要更改类型的某些字段,属性必须了解它所应用的类型的内部结构?
    • @Andy:我认为它改变类型本身的字段是很不寻常的。通常该属性提供元数据供其他代码使用 - 它比主动更被动。
    【解决方案2】:

    控制器的 ViewData 集合可从属性访问,您可以将 UserInfo 对象添加到它,然后在控制器的操作中访问它。 您还可以使用包含 UserInfo 的类型化模型。此处描述了此场景Get permission from Authorize Attribute?

    更改应用于它的属性中的类型字段并不常见,您必须非常谨慎。

    【讨论】:

    • 谢谢,这不是我想要的。我关心的主要是控制器实例与其属性之间的交互。
    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多