在我的程序(第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;
}
}