未在解决方案中识别新的Outlook实例

时间:2014-02-18 15:45:33

标签: c# .net outlook

我有用于在C#

中为Outlook创建新约会的代码

不幸的是,当我设置Outlook的新实例

Outlook.Application outlookApp = new Outlook.Application(); // creates new outlook app

“outlookApp”未在下一行中被识别,(错误错误24字段初始化程序无法引用非静态字段,方法或属性' )     Outlook.AppointmentItem oAppointment =(Outlook.AppointmentItem)outlookApp.CreateItem(Outlook.OlItemType.olAppointmentItem);

整个代码供参考。

Outlook.Application outlookApp = new Outlook.Application(); // creates new outlook app
Outlook.AppointmentItem oAppointment = (Outlook.AppointmentItem)outlookApp.CreateItem(Outlook.OlItemType.olAppointmentItem); // creates a new appointment

oAppointment.Subject = "Holiday request for " + name ; // set the subject
oAppointment.Body = " "; // set the body / send details of contact form below
oAppointment.Location = "Nicks Desk!"; // set the location
oAppointment.Start = Convert.ToDateTime(notesDate); // Set the start date NEEDS TO BE THE DATE THAT THE USER ENTERS IN DATEFROM
oAppointment.End = Convert.ToDateTime(notesDate); // End date NEEDS TO BE THE DATE THAT THE USER ENTERS IN DATETO
oAppointment.ReminderSet = true; // Set the reminder
oAppointment.ReminderMinutesBeforeStart = 15; // reminder time
oAppointment.Importance = Outlook.OlImportance.olImportanceHigh; // appointment importance
oAppointment.BusyStatus = Outlook.OlBusyStatus.olBusy;

oAppointment.Save(); 
Outlook.MailItem mailItem = oAppointment.ForwardAsVcal(); 
//who is sending the email
mailItem.SentOnBehalfOfName = NameInput;
// email address to send to
mailItem.To = "mailto:me@decodedsolutions.co.uk">me@decodedsolutions.co.uk; 
// send 
mailItem.Send();      

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

由于错误试图告诉您,您无法在字段初始值设定项中引用您的实例(包括其他字段),因为它们在构造函数之前运行。

将初始化程序移动到方法。

答案 1 :(得分:1)

正如您在评论中提到的,您得到的错误是:

  

错误24字段初始值设定项无法引用非静态字段,方法或属性outlookApp

从您发布的代码中不能立即清楚,但是您收到此错误的事实意味着我怀疑您发布的整个代码示例直接包含在类中,而不是在方法或该类的构造函数:

public class MyClass
{
    // the code you posted is contained here
}

在您发布的代码中,第一行在此位置完全有效。但是,第二行在这种情况下是非法的,跟随它的许多行也是如此。当你初始化oAppointment字段时,你是通过使用outlookApp字段这样做的 - 但不允许字段初始值设定项引用其他字段,因为不能保证字段初始化的顺序,因此outlookApp甚至可能没有价值。

您可能需要将发布的大部分或全部代码移动到构造函数或方法中,其中您编写的行有效:

public class MyClass
{
    public void MyMethod()
    {
        // the code you posted should be contained here
    }
}

正是MyClass和MyMethod的样子,我没有足够的信息告诉你。