如何在私有方法中访问对象列表?

时间:2016-11-22 15:38:21

标签: c# list object sharepoint

我需要访问在激活SharePoint Workflow时实例化的对象列表。

private void onWorkflowActivated_Invoked(object sender, ExternalDataEventArgs e)
{
    string json = @"[
        {
            'StateID': 1,
            'Title': 'State One'
        },
        {
            'StateID': 2,
            'Title': 'State Two'
        }
    ]";

    Json j = new Json();

    List<State> states = JsonConvert.DeserializeObject<List<State>>(json);
}

当我通过类似以下方式更改工作流程的另一个步骤时,我需要能够访问列表:

private void StateOneTask_MethodInvoking(object sender, EventArgs e)
{
    try
    {
        StateOneTask_TaskId = Guid.NewGuid();
        StateOneTask_ContentTypeId = TaskContentType;
        createStateOneTask.TaskProperties = new SPWorkflowTaskProperties();
        createStateOneTask.TaskProperties.Title = states[0].Title;
        ...
    }
}

我目前无法访问列表,因为它是在私有方法中。我该怎么办?

2 个答案:

答案 0 :(得分:1)

如果您只是创建一个实例var怎么办?

 class YourClass {
    private List<State> states;
    private void onWorkflowActivated_Invoked(object sender, ExternalDataEventArgs e)
    {
         string json = @"[
         {
            'StateID': 1,
            'Title': 'State One'
         },
         {
            'StateID': 2,
            'Title': 'State Two'
         }
         ]";

         Json j = new Json();

         states = JsonConvert.DeserializeObject<List<State>>(json);
     }
}

答案 1 :(得分:0)

您的states变量是在堆栈中创建的,仅存在于onWorkflowActivated_Invoked事件范围中。一旦方法完成,变量就不再存在。作为一种解决方案,我建议您将此变量定义移出事件范围。 您可以在此处详细了解:http://www.albahari.com/valuevsreftypes.aspx