【发布时间】:2017-05-30 05:52:01
【问题描述】:
我是 OOP 新手,我正在构建一个 C# 库,需要从我的 .dll 文件中调用一个方法作为按钮处理程序
例如,开发人员可以将我的库的 .dll 文件添加到他的项目中。他创建了一个按钮,而不是创建一个方法来处理事件,而是从我的 .dll 文件中调用一个方法并传递它的参数。我想我会有类似下面的代码但无法运行它!
在我的 DLL 中,我有如下的“Class1”类:
Class1
{
private string _s;
public Class1(string s)
{
this._s = s;
}
public static void MyMethod(Class1 c)
{
// do something
}
}
在我目前的项目中:
MainClass
{
Class1 c = new Class1();
Button myButton = new button();
}
现在我想在单击 myButton 时从 Class1 调用 MyMethod。我试过了:
myButton.OnClick += MyDLLName.Class1.MyMethod(c);
我也试过了:
myButton.OnClick += (s,e) => MyDLLName.Class1.MyMethod(c);
但它一直给我“预期的方法名称”错误!
我不想在我的 MainClass 中创建处理程序方法并从 Class1 调用 MyMethod
有什么想法吗?
【问题讨论】:
-
string在(s, e) => MyDLLName.MyClass.MyMethod(string s);中做什么?这不是你调用方法的方式——那是你声明方法(至少是参数列表)的方式。 -
但是当你没有真正展示你正在尝试使用的代码时,它是less清楚的。 仍然不清楚,因为您提供的是类型名称而不是变量名称。请提供minimal reproducible example - 目前还不清楚您在做什么。
-
希望现在很清楚
-
不是真的 - 它仍然不是minimal reproducible example。我们应该能够复制、粘贴、编译和运行。此外,
MyMethod不是静态方法,那么您如何期望仅使用MyDLLName.Class1.MyMethod来调用它?您需要在Class1的实例上调用它。首先要解决的问题:检查这是否实际上与此在单独的程序集中相关。对单个程序集和命名空间中的所有内容尝试相同的代码。我怀疑你也会遇到同样的问题。
标签: c# oop events event-handling