Я создаю простое приложение Win Forms, которое отображает несколько сеансов VNC в одном формате сетки. Пароль для каждого VNC Сервера один и тот же, я пытаюсь сохранить пароль в виде строки и вызывать его с каждого VNCSharp Connection.
Мое текущее решение дает мне «не вызываемый элемент SecurePass.pass, который нельзя использовать как метод». Каков наилучший способ обойти эту проблему?
namespace AutomatedGateViewer
{
public class SecurePassword
{
public static string pass = "P455W0rD";
}
public partial class AGSV : Form
{
public AGSV()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Kiosk1VNC.GetPassword = new AuthenticateDelegate(SecurePassword.pass());
Kiosk1VNC.Connect("172.168.110.90");
Kiosk2VNC.GetPassword = new AuthenticateDelegate(SecurePassword.pass());
Kiosk2VNC.Connect("172.168.110.99");
}
}
}
@RobertBaron Я отредактировал свой вопрос, добавив дополнительную информацию.
SecurePassword.pass не является методом, как указано в сообщении об ошибке. Так что уберите скобки.
Правда, тогда я получаю имя метода, ожидаемое как моя ошибка. Я считаю, что мне нужно сделать labdaexpression, но я не могу понять это.





Вам нужно передать делегата свойству GetPassword. подпись этого делегата:
string AuthenticateDelegate();
Итак, нам нужно лямбда-выражение, которое не принимает параметров и возвращает строку. Достаточно легко:
Kiosk1VNC.GetPassword = new AuthenticateDelegate(() => SecurePassword.pass);
Это может не сработать (у меня нет окна VS). Если нет, используйте это вместо этого:
Kiosk1VNC.GetPassword = () => SecurePassword.pass;
Идеальный. Я как раз собирался отредактировать свой первоначальный вопрос. Теперь это имеет полный смысл. Огромное спасибо
Какой у Вас вопрос?