Usuário com melhor resposta
Tipo de Classe

Pergunta
-
Respostas
-
Olá,
Sim é possível, por exemploclass Program { static void Main(string[] args) { PermissaoFuncionario permissaoFuncionario = new PermissaoFuncionario(); if (permissaoFuncionario.GetType().BaseType == typeof(Permissao)) Console.WriteLine("Classe herda de Permissao"); else Console.WriteLine("Classe não herda de Permissao"); Console.Read(); } } class PermissaoFuncionario : Permissao { } class Permissao { }
Se a resposta for útil por favor não esqueça de marca.
Abraços,
Daniel Fonseca Castro
www.danielfonsecacastro.com.br
twitter- Sugerido como Resposta Danimar Ribeiro quarta-feira, 3 de fevereiro de 2010 15:39
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 4 de fevereiro de 2010 13:30
-
Olá Helio,
Basta utilizar o método IsSubclassOf da classe Type, que retorna um valor do tipo bool, indicando se a classe herda ou não da classe indicada.
PermissaoFuncionario p = new PermissaoFuncionario(); // A classe desse objeto herda da classe Permissao? if (p.GetType().IsSubclassOf(typeof(Permissao))) { // Sim... }
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://www.caioproiete.com- Sugerido como Resposta Danimar Ribeiro quarta-feira, 3 de fevereiro de 2010 15:39
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 4 de fevereiro de 2010 13:30
-
if (permissaoFuncionario.GetType().BaseType == typeof(Permissao))
Console.WriteLine("Classe herda de Permissao");
Apenas para complementar, a propriedade BaseType retorna o tipo da herança imediatamente acima, e não percorre toda a árvore da herança, portanto só é útil quando queremos saber se um determinado tipo herda diretamente de um outro tipo.
Por exemplo, se tivéssemos essas três classes:
public class Veiculo { } public class Carro : Veiculo { } public class CarroFormula1 : Carro { }
O BaseType da classe Carro é Veiculo, mas o BaseType de CarroFormula1 é Carro...
No entanto, tanto Carro quanto CarroFormula1 herdam da classe Veiculo, portanto ambos herdam da classe Veiculo. A única diferença é que Carro herda diretamente de Veiculo, enquanto CarroFormula1 herda indiretamente, através da classe Carro.
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://www.caioproiete.com- Sugerido como Resposta Danimar Ribeiro quarta-feira, 3 de fevereiro de 2010 15:39
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 4 de fevereiro de 2010 13:30
Todas as Respostas
-
Olá,
Sim é possível, por exemploclass Program { static void Main(string[] args) { PermissaoFuncionario permissaoFuncionario = new PermissaoFuncionario(); if (permissaoFuncionario.GetType().BaseType == typeof(Permissao)) Console.WriteLine("Classe herda de Permissao"); else Console.WriteLine("Classe não herda de Permissao"); Console.Read(); } } class PermissaoFuncionario : Permissao { } class Permissao { }
Se a resposta for útil por favor não esqueça de marca.
Abraços,
Daniel Fonseca Castro
www.danielfonsecacastro.com.br
twitter- Sugerido como Resposta Danimar Ribeiro quarta-feira, 3 de fevereiro de 2010 15:39
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 4 de fevereiro de 2010 13:30
-
Olá Helio,
Basta utilizar o método IsSubclassOf da classe Type, que retorna um valor do tipo bool, indicando se a classe herda ou não da classe indicada.
PermissaoFuncionario p = new PermissaoFuncionario(); // A classe desse objeto herda da classe Permissao? if (p.GetType().IsSubclassOf(typeof(Permissao))) { // Sim... }
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://www.caioproiete.com- Sugerido como Resposta Danimar Ribeiro quarta-feira, 3 de fevereiro de 2010 15:39
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 4 de fevereiro de 2010 13:30
-
if (permissaoFuncionario.GetType().BaseType == typeof(Permissao))
Console.WriteLine("Classe herda de Permissao");
Apenas para complementar, a propriedade BaseType retorna o tipo da herança imediatamente acima, e não percorre toda a árvore da herança, portanto só é útil quando queremos saber se um determinado tipo herda diretamente de um outro tipo.
Por exemplo, se tivéssemos essas três classes:
public class Veiculo { } public class Carro : Veiculo { } public class CarroFormula1 : Carro { }
O BaseType da classe Carro é Veiculo, mas o BaseType de CarroFormula1 é Carro...
No entanto, tanto Carro quanto CarroFormula1 herdam da classe Veiculo, portanto ambos herdam da classe Veiculo. A única diferença é que Carro herda diretamente de Veiculo, enquanto CarroFormula1 herda indiretamente, através da classe Carro.
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://www.caioproiete.com- Sugerido como Resposta Danimar Ribeiro quarta-feira, 3 de fevereiro de 2010 15:39
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 4 de fevereiro de 2010 13:30