none
metodos de extensão em view designer

    Question

  • Olá,

     

    tenho um método de extensão que gostaria de inserir para gerar botoes numa determinada tela da mesma forma que o metodo InitializeComponent gera. Eu consigo fazer isso porém mudo a tela para visualizar em modo "View Designer" da erro dizendo que o método não existe. Como resolvo isto ?

     

    Vinisan

     

    Wednesday, July 23, 2008 2:35 PM

All replies

  • Boa tarde Vinisan,

     

    Esse problema acontece geralmente quando você cria componentes a menos via código, dos que existem no designer!

     

    Faça um teste para ver se é o mesmo erro que está aparecendo pra você... Abra um projeto novo, e jogue dois botoes na tela...

     

    Vá até o InitializeComponent e remova a linha:

     

    this.button1 = new System.Windows.Forms.Button();

     

     

    Volte para o designer e veja se é a mesma coisa... Se for, verique qual dois componentes você está esquecendo de criar!

     

     

    Abraço.

    Wednesday, July 23, 2008 7:28 PM
  • Ola Henrique,

     

    Os Componentes são criados correntamente, e os métodos de extensão são reconhecidos pelo c#. O problema é que quando o aplicativo é compilado eu já verifiquei que o compilador do c# troca os códigos originais dos métodos de extensão por outros códigos. No meu caso quando eu solicito visualizar meu form em designer o compilador tenta "resolver" meu código, ai dá erro pq ele nao reconhece como sendo método do objeto.

     

    segue abaixo um exemplo

     

    public static class MetodosExtensao

    {

    public void AddAtributosControle(this TextBox controle, string atributo, string valor)

    {

    //

    }

    }

     

     

    em form1.designer.cs eu insiro o seguinte código no método InitializeComponent()

     

    private void InitializeComponent()

    {

    TextBox txtObjeto = new TextBox()

    this.txtObjeto.AddAtributosControle("Text", "Nome");

    }

    Friday, July 25, 2008 1:12 AM
  • Bom dia Vinisan,

     

    Dá uma olhada no projeto que eu criei, vê se é isso que você quer:

     

    http://cid-7a6c37c043f09ab8.skydrive.live.com/browse.aspx/P%c3%bablico

     

    Se for, você estava esquecendo de herdar o textbox no seu MetodosExtensao...

     

    Se não for isso, posta aí...

     

    Abraço.

    Friday, July 25, 2008 11:56 AM