访问函数返回的变量的属性

时间:2019-01-16 03:44:07

标签: c# attributes

在我的程序(第1节)中,我从类(第2节)中调用一个函数,该函数返回附加了自定义属性(第3节)的值。我遇到的问题是我试图访问在计算器类中从Minus函数返回的Attribute。

我试图通过将属性与信息一起嵌入来与函数传递信息。我不想在函数的输入或输出中传递变量,因为我试图避免对函数进行大量重做。

第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;
    }
}

0 个答案:

没有答案