Как работает & ldquo; this & rdquo; работа с ключевыми словами?

Если вы имеете в виду «для атрибутов, которые принимают один параметр, укажите имена атрибутов и значение параметра», то это проще в .NET 4.5 с помощью API CustomAttributeData:

using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;

public static class Program
{
    static void Main()
    {
        PropertyInfo prop = typeof(Foo).GetProperty("Bar");
        var vals = GetPropertyAttributes(prop);
        // has: DisplayName = "abc", Browsable = false
    }
    public static Dictionary<string, object> GetPropertyAttributes(PropertyInfo property)
    {
        Dictionary<string, object> attribs = new Dictionary<string, object>();
        // look for attributes that takes one constructor argument
        foreach (CustomAttributeData attribData in property.GetCustomAttributesData()) 
        {

            if(attribData.ConstructorArguments.Count == 1)
            {
                string typeName = attribData.Constructor.DeclaringType.Name;
                if (typeName.EndsWith("Attribute")) typeName = typeName.Substring(0, typeName.Length - 9);
                attribs[typeName] = attribData.ConstructorArguments[0].Value;
            }

        }
        return attribs;
    }
}

class Foo
{
    [DisplayName("abc")]
    [Browsable(false)]
    public string Bar { get; set; }
}
1215
задан JJJ 8 February 2015 в 16:10
поделиться

5 ответов

Я рекомендую сначала прочитать статью Майка Уэста Область видимости в JavaScript ( зеркало ). Это отличное и удобное введение в концепции this и цепочки областей видимости в JavaScript.

Как только вы начнете привыкать к this , правила на самом деле станут довольно простыми. Стандарт ECMAScript 5.1 определяет это :

§11.1.1 Ключевое слово this

Ключевое слово this оценивается как значение ThisBinding текущего контекста выполнения

ThisBinding - это то, что интерпретатор JavaScript поддерживает как оценивает код JavaScript, как специальный регистр ЦП, который содержит ссылку на объект. Интерпретатор обновляет ThisBinding всякий раз, когда устанавливает контекст выполнения в одном из трех различных случаев:

1. Начальный глобальный контекст выполнения

Это случай кода JavaScript, который оценивается на верхнем уровне, например когда непосредственно внутри