I have been refactoring one of my old MSSQL Connection helper library and I got the following error:
Error CS7036 There is no
argument given that corresponds to the required formal parameter
‘errorMsg’ of ‘ErrorEventArg.ErrorEventArg(string,
string)’ MSSQLTest C:UsersAdministratorDesktopMSSQLTestMSSQLTestMSSQLConnection.cs 61
This is my code so far:
MSSQLConnection.cs
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Threading;
namespace MSSQLTest
{
public class ErrorEventArg : EventArgs
{
public string ErrorMsg { get; set; }
public string LastQuery { get; set; }
public ErrorEventArg(string errorMsg, string lastQuery)
{
ErrorMsg = errorMsg;
LastQuery = lastQuery;
}
}
public class MSSQLConnection
{
/// <summary>
/// Private class objects.
/// </summary>
private SqlConnection sqlConnection;
private int sqlCommandTimeout;
private string lastQuery = string.Empty;
/// <summary>
/// Public event related objects & handler.
/// </summary>
public event ErrorHandler OnError;
public delegate void ErrorHandler(MSSQLConnection sender, ErrorEventArg e);
/// <summary>
/// Class constructor.
/// </summary>
/// <param name="sqlConnection"></param>
/// <param name="sqlCommandTimeout"></param>
public MSSQLConnection(SqlConnection sqlConnection, Int32 sqlCommandTimeout = 120)
{
if (null == sqlConnection)
throw new Exception("Invalid MSSQL Database Conection Handle");
if (sqlConnection.State != System.Data.ConnectionState.Open)
throw new Exception("MSSQL Database Connection Is Not Open");
this.sqlConnection = sqlConnection;
this.sqlCommandTimeout = sqlCommandTimeout;
}
/// <summary>
/// Helper method to emit a database error to event subscribers.
/// </summary>
/// <param name="errorMsg"></param>
internal void EmitError(String errorMsg)
{
var errorDelegate = OnError;
if (errorDelegate != null)
{
errorDelegate(this, new ErrorEventArg() // Line #61
{
ErrorMsg = errorMsg,
LastQuery = lastQuery
});
}
}
/// rest of the code snipped
}
}
What does this error means & how do I fix it? I’ve not seen this error before…
Wai Ha Lee
8,56381 gold badges57 silver badges92 bronze badges
asked Nov 9, 2015 at 10:32
![]()
LatheesanLatheesan
23.1k32 gold badges106 silver badges198 bronze badges
2
In the constructor of
public class ErrorEventArg : EventArgs
you have to add «base» as follows:
public ErrorEventArg(string errorMsg, string lastQuery) : base (string errorMsg, string lastQuery)
{
ErrorMsg = errorMsg;
LastQuery = lastQuery;
}
Wai Ha Lee
8,56381 gold badges57 silver badges92 bronze badges
answered Nov 21, 2018 at 20:27
2
You have a constructor which takes 2 parameters. You should write something like:
new ErrorEventArg(errorMsv, lastQuery)
It’s less code and easier to read.
EDIT
Or, in order for your way to work, you can try writing a default constructor for ErrorEventArg which would have no parameters, like this:
public ErrorEventArg() {}
answered Jan 4, 2017 at 18:08
![]()
Filip SavicFilip Savic
2,67928 silver badges32 bronze badges
0
I got the same error but it was due to me not creating a default constructor. If you haven’t already tried that, create the default constructor like this:
public TestClass()
{
}
Wai Ha Lee
8,56381 gold badges57 silver badges92 bronze badges
answered May 7, 2019 at 20:50
![]()
I got this error when one of my properties that was required for the constructor was not public. Make sure all the parameters in the constructor go to properties that are public if this is the case:
using statements
namespace someNamespace
public class ExampleClass {
//Properties - one is not visible to the class calling the constructor
public string Property1 { get; set; }
string Property2 { get; set; }
//Constructor
public ExampleClass(string property1, string property2)
{
this.Property1 = property1;
this.Property2 = property2; //this caused that error for me
}
}
answered Oct 18, 2018 at 16:26
JakeJJakeJ
2,3115 gold badges23 silver badges34 bronze badges
I received this same error in the following Linq statement regarding DailyReport. The problem was that DailyReport had no default constructor. Apparently, it instantiates the object before populating the properties.
var sums = reports
.GroupBy(r => r.CountryRegion)
.Select(cr => new DailyReport
{
CountryRegion = cr.Key,
ProvinceState = "All",
RecordDate = cr.First().RecordDate,
Confirmed = cr.Sum(c => c.Confirmed),
Recovered = cr.Sum(c => c.Recovered),
Deaths = cr.Sum(c => c.Deaths)
});
answered Mar 18, 2020 at 15:51
AdvAppAdvApp
1,0641 gold badge14 silver badges27 bronze badges
public ErrorEventArg(string errorMsg, string lastQuery)
: base (errorMsg, lastQuery)
{
ErrorMsg = errorMsg;
LastQuery = lastQuery;
}
to call base constructor the parameters of sub class and base class must be same.
Wai Ha Lee
8,56381 gold badges57 silver badges92 bronze badges
answered Jul 5, 2021 at 9:21
kaszmkaszm
514 bronze badges
1
Ошибка:
CS7036 Отсутствует аргумент, соответствующий требуемому формальному
параметру «services» из «CommandService.AddModulesAsync(Assembly,
IServiceProvider)».
public class CommandHeadler {
private DiscordSocketClient _client;
private CommandService _service;
public CommandHeadler(DiscordSocketClient client) {
_client = client;
_service = new CommandService();
_service.AddModulesAsync(Assembly.GetEntryAssembly());
_client.MessageReceived += HandleCommandAsync;
}
private async Task HandleCommandAsync(SocketMessage s) {
var msg = s as SocketUserMessage;
if (msg == null) return;
var context = new SocketCommandContext(_client, msg);
int argPos = 0;
if (msg.HasCharPrefix('!', ref argPos)) {
var result = await _service.ExecuteAsync(context, argPos);
if (!result.IsSuccess && result.Error != CommandError.UnknownCommand) {
await context.Channel.SendMessageAsync(result.ErrorReason);
}
}
}
}
![]()
MiT
5,4871 золотой знак11 серебряных знаков31 бронзовый знак
задан 17 янв 2020 в 9:13
4
В ошибке указано, что функция принимает два аргумента
CommandService.AddModulesAsync(Assembly, IServiceProvider)
Ты передаешь только один
_service.AddModulesAsync(Assembly.GetEntryAssembly())
Нужно передавать два, второй параметр должен иметь тип IServiceProvider, если у тебя нет сервис провайдера можно передать null
_service.AddModulesAsync(Assembly.GetEntryAssembly(), null)
ответ дан 17 янв 2020 в 11:41
![]()
Grundy♦Grundy
80.1k9 золотых знаков77 серебряных знаков133 бронзовых знака
|
Revin 0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
||||||||||||
|
1 |
||||||||||||
|
06.01.2019, 22:41. Показов 10439. Ответов 18 Метки нет (Все метки)
Приветствую, вот такая проблема, даже не могу охарактеризовать, в общем то наглядно вот:
Сам паблик:
Ну и конечно же ошибка:
Эх люди умные, не откажите в помощи!
0 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
06.01.2019, 22:41 |
|
Ответы с готовыми решениями: Отсутствует аргумент, соответствующий требуемому формальному параметру Отсутствует аргумент, соответствующий требуемому формальному параметру
Form4 pos = new Form4(); Сама форма … Код калькулятора выдает ошибку «Отсутствует аргумент, соответствующий требуемому формальному параметру» 18 |
|
814 / 561 / 240 Регистрация: 01.07.2018 Сообщений: 1,818 |
|
|
06.01.2019, 22:55 |
2 |
|
Revin, Ваш метод Goening видимо должен аргумент принимать, а вы без аргумента пытаетесь выполнить
0 |
|
16 / 10 / 4 Регистрация: 16.12.2017 Сообщений: 281 |
|
|
06.01.2019, 23:00 |
3 |
|
Там метод сам себя вроде бы вызывает
0 |
|
814 / 561 / 240 Регистрация: 01.07.2018 Сообщений: 1,818 |
|
|
06.01.2019, 23:02 |
4 |
|
Dimasta1488, Ну покажите его уже.
0 |
|
Someone007
6403 / 3940 / 1578 Регистрация: 09.05.2015 Сообщений: 9,241 |
||||||||
|
06.01.2019, 23:30 |
5 |
|||||||
|
Как говорится найди разницу…
0 |
|
Revin 0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
||||||||
|
06.01.2019, 23:35 [ТС] |
6 |
|||||||
|
Я исправил, ошибка исчезла, теперь код выглядит так:
Ну и паблик
Однако в течение 5 миллисекунд буква w не пишется (должна быть по сути эмуляция зажатия клавиши W)
0 |
|
15 / 14 / 9 Регистрация: 14.12.2017 Сообщений: 48 |
|
|
07.01.2019, 00:09 |
7 |
|
SendKeys.Send() — это оболочка форм над WinApi, лучше юзай WinApi для эмуляции нажатия кнопок в окне. Не по теме: В методе Going() не используется значение таймаута
0 |
|
0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
|
|
07.01.2019, 00:13 [ТС] |
8 |
|
PplAlt, то есть как тогда будет выглядеть код?
0 |
|
Andreyip 534 / 344 / 116 Регистрация: 17.08.2014 Сообщений: 1,290 |
||||
|
07.01.2019, 22:33 |
9 |
|||
У вас тут рекурсия. которая забьет весь стек. Добавлено через 6 минут
1 |
|
Revin 0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
||||||||
|
07.01.2019, 22:41 [ТС] |
10 |
|||||||
|
Вроде бы все хорошо, получается такой код:
Но проблема, ошибки:
0 |
|
534 / 344 / 116 Регистрация: 17.08.2014 Сообщений: 1,290 |
|
|
07.01.2019, 22:48 |
11 |
|
Revin,
0 |
|
0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
|
|
07.01.2019, 22:55 [ТС] |
12 |
|
Andreyip, может я слепой, но не увидел того что мне надо
0 |
|
Andreyip 534 / 344 / 116 Регистрация: 17.08.2014 Сообщений: 1,290 |
||||||||
|
08.01.2019, 00:57 |
13 |
|||||||
|
Revin, там написано вот (тут-> ссылка на тему с винапи) а код нужный тут
Добавлено через 3 минуты
0 |
|
Revin 0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
||||
|
08.01.2019, 16:58 [ТС] |
14 |
|||
|
Andreyip, хорошо, но что означают:
0 |
|
228 / 165 / 110 Регистрация: 09.11.2015 Сообщений: 454 |
|
|
08.01.2019, 17:55 |
15 |
|
0 |
|
0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
|
|
08.01.2019, 17:57 [ТС] |
16 |
|
Ellizio, не нашел там объяснения что означает 0x0001 и 0x0002
0 |
|
Andreyip 534 / 344 / 116 Регистрация: 17.08.2014 Сообщений: 1,290 |
||||||||
|
08.01.2019, 18:36 |
17 |
|||||||
|
РешениеRevin, Это значения флагов указывающее что кнопка нажата или отпущена. Вам в этом нет надобности разбираться. просто вызывайте методы Press Для нажатия и release для отпускания.
далее используем как то так
1 |
|
0 / 0 / 0 Регистрация: 27.05.2018 Сообщений: 53 |
|
|
08.01.2019, 21:55 [ТС] |
18 |
|
Andreyip, благодарю
0 |
|
534 / 344 / 116 Регистрация: 17.08.2014 Сообщений: 1,290 |
|
|
08.01.2019, 22:14 |
19 |
|
Revin, Главное чтобы все работало как нужно, остальное с опытом придет)
1 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
08.01.2019, 22:14 |
|
19 |
В общем нужно сформировать очередь из двадцати случайных элементов диапазона [-40, 40], вывести ее в dataGridView1, потом из списка удалить все отрицательные значения и вывести в dataGridView2. Для этого я пользуюсь формой и классом, в классе два метода.
Класс:
public class Queue
{
public int[] FirstQueue() //Первый метод
{
Queue<int> first = new Queue<int>(); //Очередь
Random ran = new Random(); //Рандом
for (int i = 0; i < 20; i++) //Заполняю очередь
{
first.Enqueue(ran.Next(-40, 40));
}
int[] array = first.ToArray(); //Делаю из очереди массив чтобы вывести в форму
SecondQueue(first); //Передаю очередь на второй метод
return array; //Вывожу массив
}
public int[] SecondQueue(Queue<int> input) //Второй метод
{
ArrayList second = new ArrayList(); //Создаю список
for (int i = 0; i < 20; i++)
{
if (second.Add(input.Dequeue()) >= 0) //Пихаю в список только неотрицательные элементы
{
second.Add(input.Dequeue());
}
else
{
input.Dequeue();
}
}
int[] array2 = (int[])second.ToArray(typeof(int)); //Делаю из списка массив чтобы вывести в форму
return array2; //Вывожу
}
}
Форма:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.RowCount = dataGridView2.RowCount = 1; //Задаю количество и размеры строк и колонок и их размеры
dataGridView1.ColumnCount = 20;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].Width = 40;
}
for (int i = 0; i < dataGridView2.Columns.Count; i++)
{
dataGridView2.Columns[i].Width = 40;
}
}
Queue first = new Queue(); //Ссылка на класс
private void ButtonRun_Click(object sender, EventArgs e) //Первая кнопка
{
int[] array = first.FirstQueue(); //Присваиваю значение массива из первого метода
for (int i = 0; i < 20; i++)
{
dataGridView1.Rows[0].Cells[i].Value = array[i]; //Вывожу в ячейки dataGridView через цикл
}
}
private void ButtonDelete_Click(object sender, EventArgs e)
{
int[] array2 = first.SecondQueue(); //Пытаюсь присвоить массив, но пишет ошибку "Ошибка CS7036 Отсутствует аргумент, соответствующий требуемому формальному параметру "input" из "Queue.SecondQueue(Queue<int>)". "
for (int i = 0; i < array2.Length; i++) //Вывод
{
dataGridView2.Rows[0].Cells[i].Value = array2[i];
}
}
private void ButtonClose_Click(object sender, EventArgs e)
{
Close();
}
}
Сразу скажу что я студент первого курса, пока очень плохо разбираюсь как в языке, так и с ООП и вообще в программировании. Работает только вывод очереди, вывод отредактированного списка нет, соответственно.
Спасибо за внимание, буду признателен любой помощи.
It is because you created your Cell_Phone class with a constructor requiring three parameters but only pass one when the object is instantiated in Main class you only pass a brands enum.
As the constructor seems to populate the fields depending on the value of the enum you could probably get rid of the in productID and price parameters in the Cell_Phone constructor.
public Cell_Phone(int productID, double price, Brands brand) Cell_Phone phone = new Cell_Phone(Brands.Xiaomi);
As follows
public Cell_Phone(Brands brand) Cell_Phone phone = new Cell_Phone(Brands.Xiaomi);

Отсутствует аргумент, соответствующий требуемому формальному параметру ,как исправить?