È possibile avere un delegato come parametro di un attributo?È possibile avere un delegato come parametro di attributo?
Ti piace questa:
public delegate IPropertySet ConnectionPropertiesDelegate();
public static class TestDelegate
{
public static IPropertySet GetConnection()
{
return new PropertySetClass();
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface,AllowMultiple=false,Inherited=true)]
public class WorkspaceAttribute : Attribute
{
public ConnectionPropertiesDelegate ConnectionDelegate { get; set; }
public WorkspaceAttribute(ConnectionPropertiesDelegate connectionDelegate)
{
ConnectionDelegate = connectionDelegate;
}
}
[Workspace(TestDelegate.GetConnection)]
public class Test
{
}
E se non è possibile, quali sono le alternative sensate?
In realtà è una buona soluzione. Ho creato un'interfaccia specifica per farlo, ma il delegato è molto più semplice. Grazie! –
È una soluzione, ma non una buona soluzione. È esattamente come @nemesv ha detto: hacky e soggetto a errori, perché se si modifica il nome del metodo GetConnection in qualcos'altro utilizzando il menu Refactor la stringa "GetConnection" non verrà modificata automaticamente. – prostynick
Quindi c'è una possibilità in C# limitare manualmente il tipo di argomento del costruttore? Non ho sentito nulla al riguardo, ma come vediamo nel tipo "Attributo" è possibile. Come? – monstr