Domanda

posso usare TypeDescriptor.AddAttributes per aggiungere un attributo a un tipo in fase di esecuzione. Come faccio a fare lo stesso per un metodo e parametri? (Forse 2 domande distinte ...)

È stato utile?

Soluzione

TypeDescriptor.AddAttributes colpisce solo una molto specifici casi d'uso; cioè dall'interno System.ComponentModel. Per il riposare di riflessione, si sa non sull'attributo supplementare. E in effetti, System.ComponentModel in realtà non si applica ai metodi o parametri.

Così, in breve; non si può. Sarà necessario memorizzare queste informazioni da qualche altra parte (su misura), o aggiungerlo a tempo di compilazione.

Altri suggerimenti

Per come la vedo da analizzare la classe TypeDescriptor in Reflector, il metodo .AddAttributes chiama internamente il metodo .AddProvider. L'istanza TypeDescriptionProvider passato alla realtà è responsabile della fornitura di meta-dati. Si potrebbe provare ad aggiungere l'attributo [TypeDescriptionProviderAttribute] alla classe e implementare il proprio fornitore derivando dalla classe TypeDescriptionProvider. Come dice la documentazione, sovrascrivendo TypeDescriptionProvider.CreateInstance, si potrebbe fornire un oggetto sostitutivo cui tipo ha tutti gli attributi necessari. Ho il sospetto che gli attributi applicati ai metodi all'interno del tipo di sostituzione avranno effetto. Tuttavia, non ho provato io stesso, quindi sentitevi liberi di sperimentare ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top