Доступ к атрибуту переменной, возвращаемой функцией - PullRequest
0 голосов
/ 16 января 2019

В моей программе (раздел 1) я вызываю функцию из класса (раздел 2), которая возвращает значение с прикрепленным пользовательским атрибутом (раздел 3). У меня проблема в том, что я пытаюсь получить доступ к атрибуту, возвращенному функцией Minus в классе калькулятора.

Я пытаюсь передавать информацию в функции и из них, вставляя атрибуты в информацию. Я не хочу передавать переменные во входные или выходные данные функций, поскольку я пытаюсь избежать масштабных переделок функций.

Раздел 1 - Основная программа

class Program
{
    static void Main(string[] args)
    {
        Calculator calc = new Calculator();

        var y = calc.Minus(1, 2);

        // Write the value
        Console.WriteLine(y);

        // Write the attribute value associated with variable `y`
        // - Unsure how to do this - <----- ISSUE AREA

        // Read key
        Console.WriteLine();
    }
}   

Раздел 2 - Атрибут функции, полученный от

public class Calculator {

    [FormResponse(HiddenMessage = "default")]
    public decimal Minus(decimal a, decimal b)
    {
        MethodBase.GetCurrentMethod().SetMessage("Success");
        Console.WriteLine(MethodBase.GetCurrentMethod().GetMessage());
        return a - b;
    }
}

Раздел 3 - Пользовательский атрибут

/// <summary>
/// Form Response
/// </summary>
[AttributeUsage(AttributeTargets.All)]
public class FormResponseAttribute : Attribute
{
    /// <summary>
    /// Forms
    /// </summary>
    public string HiddenMessage { get; set; }
}

Приведенный ниже код не является критичным для проблемы, но размещен здесь для понимания интересующихся.

Раздел 4 - Методы поддержки

 public static class FormResponseFunctions
{
    /// <summary>
    /// </summary>
    /// <param name=""></param>
    /// <param name="forms"></param>
    /// <param name=""></param>
    public static void SetMessage(this MethodBase method, string s)
    {
        var attrib = method.GetCustomAttributes(typeof(FormResponseAttribute), true);
        var attributeProperties = (FormResponseAttribute)attrib[0];

        attributeProperties.HiddenMessage = s;            
    }

    /// <summary>
    /// </summary>
    /// <param name=""></param>
    /// <param name="forms"></param>
    /// <param name=""></param>
    public static string GetMessage(this MethodBase method)
    {
        var attrib = method.GetCustomAttributes(typeof(FormResponseAttribute), true);
        var attributeProperties = (FormResponseAttribute)attrib[0];

        return attributeProperties.HiddenMessage;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...