Jump to content

Como aceder variáveis que são private de métodos public?


Mav3r1cK

Recommended Posts

Estou tentando acessar variáveis que são private(sendo os métodos public),para que eu possa usa-las para junto com os TextBox para calcular o valor total.

Mas como é possível fazer isto ?

É necessário eu fazer deste jeito,pois é o que se pede em um exercício que preciso fazer.

Edited by Mav3r1cK

"O que nós sabemos é uma gota; o que ignoramos é um oceano"

"Verba volant,scripta manent"

Link to comment
Share on other sites

  • 2 weeks later...

Então pessoal,fazia muito tempo que não mexia com C# e já havia esquecido o nível da hierarquia de encapsulamento do C#,por que é óbvio que não tem como acessar uma variável private,já que private somente dentro da Classe é possível acessar.

Enfim obrigado as respostas,eu já consegui solucionar meu problema faz um tempo,só esqueci de fechar este tópico,mas desde já agradeço por tudo.

"O que nós sabemos é uma gota; o que ignoramos é um oceano"

"Verba volant,scripta manent"

Link to comment
Share on other sites

  • 9 months later...

Ola senhores,

Só dando opções pra vocês, é possível acessar variáveis privadas da instancia utilizando Reflection, segue um método genérico que efetua isso, é só chamar passando os parâmetros.

 

/// <summary>
/// Utilizando reflection para pegar atributo do objeto
/// </summary>
///
/// <param name="type">O Tipo da instancia.</param>
/// <param name="instance">A instancia do Objeto.</param>
/// <param name="fieldName">O nome do atributo que retornará o erro.</param>
///
/// <returns>O valor do atributo do objeto passado.</returns>
internal static object GetInstanceField(Type type, object instance, string fieldName)
 {
        BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
         | BindingFlags.Static;
         FieldInfo field = type.GetField(fieldName, bindFlags);
            return field.GetValue(instance);
  }

Pra Chamar é só :

string str = GetInstanceField(typeof(SuaClasse), instancia, "NomeAtributo") as string;

Espero que ajude num futuro problema parecido!

  • Vote 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.