Quando si usano diverse librerie può capitare di avere extension members con lo stesso nome sullo stesso tipo. Se nella nostra classe dobbiamo usare classi di queste librerie, abbiamo il problema che il compilatore non saprebbe quale extension member usare. In questi casi dobbiamo usare la disambiguazione cioè chiamare direttamente il metodo all'interno della classe statica. Con i metodi questa cosa è molto semplice in quanto basta invocarli staticamente passando come primo parametro il tipo che estendiamo.
public static class MyExtensions
{
extension(string input)
{
public void IsNullOrWhiteSpace() => return String.IsNullOrWhiteSpace(input);
public void IsLongerThan3 => return input.Length > 3;
}
}
var x = "test";
var b = MyExtensions.IsNullOrWhiteSpace(x);Una proprietà non accetta parametri, quindi come si risolve? Da sempre le proprietà sono semplici wrapper di metodi sottostanti generati dal compilatore. Quando creiamo una proprietà come extension member, il compilatore genera per noi un getter pubblico da invocare appositamente quando dobbiamo disambiguare. Il nome del metodo è get_proprietà
var x = "test"; var b = MyExtensions.get_IsLongerThan3(x);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.


