EventArgs 不包含采用 1 个参数的构造函数
Posted
技术标签:
【中文标题】EventArgs 不包含采用 1 个参数的构造函数【英文标题】:EventArgs does not contain a constructor that takes 1 argument 【发布时间】:2015-05-04 20:35:51 【问题描述】:我找不到与我匹配的特定问题,我认为这与我正在使用一个参数(一个字符串)创建 EventArgs 的子类这一事实有关。当我尝试编译时,它似乎告诉我 ScanInfoEventArgs 没有一个构造函数,而它显然有(至少对我来说很清楚)。
我只包含了我认为适用的部分代码。这么简单的事情,我都不知所措了。
public partial class MainWindow : Window
Coffee coffeeOnHand;
SweetTea sweetTeaOnHand;
BlueberryMuffin blueberryMuffinOnHand;
public MainWindow()
InitializeComponent();
//The following reads the inventory from file, and assigns each inventory item to the Coffee, SweatTea
//and BlueberryMuffin objects in memory.
using (Stream input = File.OpenRead("inventory.dat"))
BinaryFormatter formatter = new BinaryFormatter();
coffeeOnHand = (Coffee)formatter.Deserialize(input);
sweetTeaOnHand = (SweetTea)formatter.Deserialize(input);
blueberryMuffinOnHand = (BlueberryMuffin)formatter.Deserialize(input);
//The following adds whatever information is loaded from the objects on file from above
//into the dropdown box in the menu.
SelectedItemDropdown.Items.Add(coffeeOnHand);
SelectedItemDropdown.Items.Add(sweetTeaOnHand);
SelectedItemDropdown.Items.Add(blueberryMuffinOnHand);
public class ScanInfoEventArgs : EventArgs
ScanInfoEventArgs(string scanType)
this.scanType = scanType;
public readonly string scanType;
public class Scan
//Delegate that subscribers must implement
public delegate void ScanHandler (object scan, ScanInfoEventArgs scanInfo);
//The event that will be published
public event ScanHandler onScan;
public void Run()
//The ScanInfoEventArgs object that will be passed to the subscriber.
ScanInfoEventArgs scanInformation = new ScanInfoEventArgs("scanType");
// Check to see if anyone is subscribed to this event.
if (onScan != null)
onScan(this, scanInformation);
【问题讨论】:
我想我以前从来没有这样做过。我使用“:base()”作为构造函数? 没关系。我昨天才发现总是调用任何派生类型的无参数构造函数,所以你很好。但是如果你有一个重载的构造函数,你想将参数传递给基类,你会做类似ScanInfoEventArgs(object source, string scanType) : base(source)
的事情。当然,这在这种情况下不起作用,因为 EventArgs
没有接受对象的构造函数,但这只是为了说明目的。
【参考方案1】:
你需要让你的构造函数public
。所有班级成员默认为private
,即外界无法接触到他们。
由于编译器没有看到匹配的 public 构造函数(如代码实际调用的构造函数),它抛出了您看到的错误。
正确代码:
public ScanInfoEventArgs(string scanType)
this.scanType = scanType;
请注意,如果所有代码都位于同一个程序集中,internal
也可以正常工作。
【讨论】:
天哪,非常感谢!我以为因为类本身是公开的,所以方法也是公开的,但现在我想,这没有任何意义。以上是关于EventArgs 不包含采用 1 个参数的构造函数的主要内容,如果未能解决你的问题,请参考以下文章
CS1729 'MyNavigationPage' 不包含采用 1 个参数的构造函数 --> 在 Visual Studio 2019 社区版中
ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数
C#编程中,出现 不包含采用“2”参数的构造函数的错误 怎么改?
HttpGetAttribute不包含带有1个参数的构造函数
从 2.8.4 更新到 27.1.1 后,C# CsvWriter 抛出“CsvWriter 不包含接受 1 个参数的构造函数”