【问题标题】:class attributes in c#c#中的类属性
【发布时间】:2014-12-12 17:41:56
【问题描述】:

我需要你的帮助。

我已经阅读了 C# 中的类属性,我知道我们将它们用于授权身份验证或获取一些关于在反向过程中使用 reflection 时的类。

但我真的很想了解身份验证和授权的属性是如何工作的,以及当我们只是将属性放在类之上并且我们不做任何其他事情时,它们如何真正强制用户遵循一些限制,我无法理解使用类属性的身份验证或授权过程的流程。

可能是我的问题不够清楚或有一些错误,但我真的需要一些人来解释使用 C# 中的类属性的身份验证和授权过程。

将不胜感激。

感谢每一个人。

【问题讨论】:

  • 你说的是System.Web.Mvc中的AuthorizeAttribute类吗?
  • @BrianDriscoll MVC 或者假设我想创建一个服装属性来做与 MVC 类属性相同的事情,如何做到这一点。
  • 那里有很多指南,谷歌为custom authorize attribute mvc 返回了很多点击。这就是你应该开始的地方
  • @Mohammad 没有您提供有关您尝试授权访问某些资源的上下文的更多详细信息,我无法真正向您解释...这就像试图煮沸海洋。
  • @BrianDriscolljust 我想了解这些属性是如何工作的,假设我们要在名为 Admin 的类上方使用属性 [Authorize(Roles="Administrators")],现在 MVC 是如何工作来防止使用此类的非管理员用户。如果您发现我应该阅读一些内容以了解此过程,请指导我。我是 MVC 新手 :(.

标签: c# class-attributes


【解决方案1】:

有一些反射库可以让您获取特定类的属性并对其进行迭代。

一旦您了解了如何使用反射来迭代属性值和属性,那么从概念上理解如何将它们用于验证就不是一件容易的事了。


您还可以使用反射来迭代对象的方法和属性,并调用这些方法/属性。微软为此提供了一些非常好的文档,所以如果你想查看它,你可以去看看它。


这是一个示例程序。使用属性

class Program
{
    static void Main(string[] args)
    {
        var something = new ClassWithAttributes();
        var attributes = typeof(ClassWithAttributes).GetCustomAttributesData();

        var attribute = (SomeAttribute) Attribute.GetCustomAttribute(typeof(ClassWithAttributes), typeof (SomeAttribute));

        Console.WriteLine(attribute.Name);
        Console.ReadKey(false);
    }
}

[Some("larry")]
class ClassWithAttributes
{

}

public class SomeAttribute : System.Attribute
{
    public string Name { get; set; }

    public SomeAttribute(string name)
    {
        this.Name = name;
    }
}

这是我用来帮助我制作样本的文档

http://msdn.microsoft.com/en-us/library/sw480ze8.aspx

http://msdn.microsoft.com/en-us/library/71s1zwct%28v=vs.110%29.aspx

【讨论】:

    【解决方案2】:

    属性通过反射将功能应用于类。该类可以获取它所装饰的属性,并根据需要使用它们和任何参数。

    延伸阅读:Attributes Tutorial (MSDN)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      相关资源
      最近更新 更多