В моей программе (раздел 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;
}
}