class Conta { public string Titular { get; set; } // outros métodos e atributos da conta }
static class ContaExtensions { public static void MudaTitular(this Conta conta, this string titular) { conta.Titular = titular; } }
class Conta { public string Titular { get; set; } // outros métodos e atributos da conta }
static class ContaExtensions { public static void MudaTitular(this Conta conta, this string titular) { conta.Titular = titular; } }
Boa tarde Julio Cesar,
segundo esse link: https://www.dotnetperls.com/extension
O método é static e recebe o this para indicar o tipo de dado que vai implicar. Ou seja, o tipo de dado que vc vai passar pra ele o valor que ele irá utilizar. por exemplo:
using System;
public static class ExtensionMethods
{
public static string UppercaseFirstLetter(this string value)
{
// Uppercase the first letter in the string.
if (value.Length > 0)
{
char[] array = value.ToCharArray();
array[0] = char.ToUpper(array[0]);
return new string(array);
}
return value;
}
}
class Program
{
static void Main()
{
// Use the string extension method on this value.
string value = "dot net perls";
value = value.UppercaseFirstLetter();
Console.WriteLine(value);
}
}
Saída: Dot net perls
os parâmetros posteriores são opcionais e não utilizam o this, pois o this serve para indicar somente qual é o tipo de dado que vai ser utilizado.. porém, você pode passar demais parâmetros à extensions como por exemplo:
using System;
static class Extensions
{
public static int MultiplyBy(this int value, int mulitiplier)
{
// Uses a second parameter after the instance parameter.
return value * mulitiplier;
}
}
class Program
{
static void Main()
{
// Ten times 2 is 20.
// Twenty times 2 is 40.
int result = 10.MultiplyBy(2).MultiplyBy(2);
Console.WriteLine(result);
}
}
Saída: 40
no seu caso, o código não compila pois vc passou a segunda variável com o this , para solucionar basta retirar o this.
static class ContaExtensions
{
public static void MudaTitular(this Conta conta, string titular)
{
conta.Titular = titular;
}
}
Maravilha. Bem esclarecedor. Obrigado pela ajuda