不知道我哪里出了问题。
我有一个名为EMails的类和一个名为EmailEvent的例程,它是从另一个页面调用的。下面是方法声明:
public void EmailEvent(
string evtDate,
string evtName,
string evtContact,
string evtBody,
string lnkMinutes,
string lnkTReports,
String[] textTo)如您所见,我正在传递一个数组。在调用例程的页面上,我有以下代码:
ArrayList mailIDs = new ArrayList();
switch (ddlSelection.SelectedValue.ToString())
{
case "One":
mailIDs.Add(ddlallMembers.SelectedValue.ToString());
break;
case "Members":
mailIDs.Add(ddlSelection.SelectedValue.ToString());
break;
case "Prospects":
mailIDs.Add(ddlSelection.SelectedValue.ToString());
break;
case "All":
mailIDs.Add(ddlSelection.SelectedValue.ToString());
break;
case "List":
for (int mems = 0; mems < lbChosen.Items.Count; mems++)
{
mailIDs.Add(lbChosen.Items[mems].Value);
}
break;
default:
Response.Write("<script>alert('Invalid Selection. Try again.')</script>");
break;
}
String[] myArr = (String[]) mailIDs.ToArray( typeof( string ) );
Emails.EmailEvent(
tbEventDt.Text,
tbEvent.Text,
tbContact.Text,
tbEventText.Text,
hlMinutes.Target.ToString(),
hlTReport.Target.ToString(),
myArr);因此,我正在传递我的所有参数,似乎是正确的,但最后一行标记为错误,如下所示:
错误5非静态字段、方法或属性“Emails.EmailEvent( string,string[])”需要对象引用。
我尝试过许多参数的变体(只传递数组,传递所有东西,除了对过程进行适当更改的数组)。总是同样的错误。
那我做错什么了?这是我第一次尝试传递数组(可能是1值,可能是12)。
发布于 2014-07-11 02:24:49
问题是,您已经将EmailEvent定义为实例方法:
public void EmailEvent( ... )您调用它就好像它是一个静态方法:
Emails.EmailEvent( ... );您的意思是创建或获取类Emails的实例,然后对该实例调用EmailEvent:
Emails myEmails = new Emails();
myEmails.EmailEvent( ... );发布于 2014-07-11 03:58:25
你有两个选择。如果希望在类的每个实例中引发事件,则需要在引发事件之前声明类的实例。
如果希望在整个应用程序域中从类引发单个事件,则需要将事件声明更改为“公共静态空EmailEvent”。
https://stackoverflow.com/questions/24689155
复制相似问题