3
respostas

Warning CS0436

Boa noite!

Não estou entendendo o alerta abaixo.

Estou usando a seguinte herança:

  • classe base Page
  • classe derivada HomePage
  • classe para escrever o teste em Selenium.

CS0436 O tipo "Page" em "C:...\Teste\pages\Page.cs" está em conflito com o tipo importado "Page" em "Teste, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null". Usar o tipo definido em "C:...\Teste\pages\Page.cs". Verifique a ortografia ou tente palavras-chave diferentes

3 respostas

Olá Amanda, Tudo bem?

A mensagem de erro está informando que você tem duas classes com o mesmo nome, o que não é um problema quando especificado com um namespace, mas pode ser um problema se você tiver algo como:

using Pacote.Page; // Importando page

namespace seu_projeto 
{
    public class Page : Page 
    {

    }
}

Neste caso o programa não tem como saber qual Page você está se referindo, visto que no escopo atual Page pode ser tanto a sua classe quanto a classe importada de algum pacote, biblioteca ou outro namespace.

Esse problema não está limitado apenas a herança ele também poderia ocorrer da seguinte forma:

using Pacote.Page; // Importando page

namespace seu_projeto 
{
    public class Page
    {
        public Page[] ChildPages;
    }
}

Neste caso o tipo sendo usado como array do ChildPages é da classe que você acabou de declarar ou da importada?

Neste caso é possível que em algum local do seu código o compilador não consiga fazer a distinção e por isso lançou este erro.

A mensagem:

CS0436 O tipo "Page" em "C:...\Teste\pages\Page.cs" está em conflito 
com o tipo importado "Page" em "Teste, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null". Usar o tipo definido em 
"C:...\Teste\pages\Page.cs". Verifique a ortografia ou tente 
palavras-chave diferentes

Está dizendo que no arquivo C:...\Teste\pages\Page.cs você está declarando um tipo (uma classe) com nome Page e que este está em conflito com outra que já existe, neste caso você deve usar a outra que já existe.

Olá Rafael, boa tarde! Tudo bem?

Muito obrigada por sua explicação, me ajudou a entender o problema.

Porém verifiquei o meu código e não consegui encontrar o conflito.

No alerta aponta exatamente o mesmo arquivo.

using NUnit.Framework;
using OpenQA.Selenium.Chrome;
using TesteAutomatizado.pages;

namespace TesteAutomatizado.testes
{
    [TestFixture]
    class HomeSystemTest
    {
        private ChromeDriver driver;
        private HomePage page;

        [SetUp]
        public void AntesDosTestes()
        {
            driver = new ChromeDriver(@"C:\Users\amanda\Desktop\");

            page = new HomePage(driver);
        }

        [Test]
        public void TestarBusca()
        {

        }

        [Test]
        public void ValidarSubtitulos()
        {

        }

        [Test]
        public void ValidarNavbar()
        {

        }
    }
}
using OpenQA.Selenium;

namespace TesteAutomatizado.pages
{
    public class HomePage : Page
    {
        private string url;

        public HomePage(IWebDriver driver) : base(driver)
        {

        }

        public string ValidarBusca(string texto)
        {

        }

        public void Visita()
        {

        }

        public bool ExisteSubtitulo(string subtitulo, int posicao)
        {
        return
        }

        public bool ValidarItemNavbar(string item, int posicao)
        {
            return
        }

        public void ValidarPagina(string url)
        {

        }
    }
}
using OpenQA.Selenium;
using System;;
using System.Net;

namespace TesteAutomatizado.pages
{
    public class Page
    {
        public IWebDriver Driver;
        public string Page;

        public Page(IWebDriver driver)
        {
            Driver = driver;
        }

        public void SetPagina(string url)
        {
            Driver.Navigate().GoToUrl(url);
        }

        public string GetPagina(string classe, int posicao)
        {
        return Page;
        }

        public void ValidarPagina(string url)
        {

        }
    }
}

Olá Amanda, Obrigado por postar o código.

Neste caso o erro está no arquivo da classe Page.

O problema ocorre porque a classe Page possui uma propriedade chamada Page.

O C# não permite que membros possuam o mesmo nome da classe.

Se você alterar o nome da propriedade ou o nome da classe isso deve resolver o problema.