错误信息是:
'_ djv.Authenticator'不包含'authenticate'的定义 没有扩展方法'authenticate'接受第一个参数 类型'_djv.Authenticator'可以找到(你错过了使用 指令或程序集引用?)我的代码在下面,我有一个 控制台应用程序和一个名为authenticator的类,两者都有 代码在那里。
namespace _Authenticator
{
public class Authenticator
{
private Dictionary < string, string > dictionary = new Dictionary < string, string > ();
public Authenticator()
{
dictionary.Add("username1", "password1");
dictionary.Add("username2", "password2");
dictionary.Add("username3", "password3");
dictionary.Add("username4", "password4");
dictionary.Add("username5", "password5");
}
public bool authenticate(string username, string password)
{
bool authenticated = false;
if (dictionary.ContainsKey(username) && dictionary[username] == password)
{
authenticated = true;
}
else
{
authenticated = false;
}
return authenticated;
}
}
}
using _Authenticator;
namespace _djv
{
class Authenticator
{
static void Main(string[] args)
{
Console.WriteLine("Please enter a username");
var username = Console.ReadLine();
Console.WriteLine("Please enter your password");
var password = Console.ReadLine();
var auth = new Authenticator();
if (auth.authenticate(username, password))
Console.WriteLine("Valid username/password combination");
else
Console.WriteLine("Invalid username/password combination");
Console.WriteLine("Press Enter to end");
Console.ReadLine();
}
}
}
答案 0 :(得分:3)
有一个类名冲突。您的auth
变量引用_djv
命名空间中的类。指定可以使用它的类的全名。
var auth = new _Authenticator.Authenticator();
或者,您可以为该类创建别名。我在这里推荐这种方法,因为它使编写代码变得不那么乏味。
using Auth = _Authenticator.Authenticator;
(...)
var auth = new Auth();
实际上,我认为最好的想法是重命名其中一个类。一切都会变得更加清洁和清晰。
答案 1 :(得分:1)
您有两个名为Authenticator
的课程。如果未明确指定名称空间,则将使用当前名称空间中的类(在这种情况下,这是错误的)。
您可以通过以下方式解决:
明确创建正确类的实例
var auth = new _Authenticator.Authenticator()
将您的主要课程重命名为其他内容,例如Main
。
我强烈建议选项2,以防止进一步混淆。