问题在于方法调用中的命名参数顺序不符合 C# 的要求。在 C# 中,命名参数必须出现在所有非命名参数之后。对于 (AarmPriority)0
和 (AarmType)1
这两个命名参数,它们是方法签名中带有默认值的可选参数。要解决这个问题,可以按顺序放置非命名参数,然后再放置命名参数。几种解决方法如下:
SendMailToAlarm(
message:
subject: "/",
isSendAlarm: false,
priority: (AarmPriority)0,
alarmType: (AarmType)1
);
如果方法签名中 IsSendAlarm
后面就是 AarmPriority
和 AarmType
参数,并且它们在方法签名中也是按此顺序排列的,您可以去掉命名参数,直接按照位置传递:
SendMailToAlarm(
$"aaaaaaaaaaaa. \n ccccc\n [key: {dic_AppSetting.Key}] \n [value: {dic_AppSetting.Value}]",
"DB",
false,
(AarmPriority)0,
(AarmType)1
);
如果由于某种原因确实无法按顺序传递,也可以创建临时变量存储这些值,然后按照顺序传入:
var priorityValue = (AarmPriority)0;
var alarmTypeValue = (AarmType)1;
SendMailToAlarm(
$"A\n B. \n [key: {C}] \n [value: {D}]",
"DB",
false,
priorityValue,
alarmTypeValue
);