Вот подход, который позволил бы вам добраться до атрибута и получить из него всю необходимую информацию:
static class TriggerDiscoverer
{
/// <summary>
/// Attempts to derive the required configuration information from the Azure Function and trigger attributes via reflection.
/// </summary>
public static TTriggerAttribute TryGet<TTriggerAttribute>() where TTriggerAttribute : Attribute
{
var frames = new StackTrace().GetFrames();
foreach (var stackFrame in frames)
{
var method = stackFrame.GetMethod();
var functionAttribute = method.GetCustomAttribute<FunctionNameAttribute>(false);
if (functionAttribute != null)
{
foreach (var parameter in method.GetParameters())
{
var triggerConfiguration = parameter.GetCustomAttribute<TTriggerAttribute>(false);
if (triggerConfiguration != null)
{
return triggerConfiguration;
}
}
return null;
}
}
return null;
}
}
Для функции, вызванной служебной шиной, она будет вызываться следующим образом:
var attribute = TriggerDiscoverer.TryGet<ServiceBusTriggerAttribute>();
и для доступа ко всей информации:
attribute.QueueName
attribute.TopicName
attribute.SubscriptionName
attribute.Connection