繁体   English   中英

C#,方法创建一个列表,但不是列表类型?

[英]C#, Method creates a list but is not of type list?

来自PHP我不习惯分配或返回特定类型,因为PHP确实不在乎。 但是回到Java和C#的世界时,这些语言确实在乎,当您说将这种类型传递给我时,它期望该类型。 所以我在做什么错,我该如何将其创建为SPList类型?

我有一个非常基本的功能,例如:

    protected void createNewList(SPFeatureReceiverProperties properties)
    {
        Dictionary<string, List<AddParams>> param = new Dictionary<string, List<AddParams>>();

        // Create the keys
        param.Add("Name", new List<AddParams>());
        param.Add("Type", new List<AddParams>());
        param.Add("Description", new List<AddParams>());

        // Set the values
        param["Name"].Add(new AddParams { type = SPFieldType.Text, required = true });
        param["Type"].Add(new AddParams { type = SPFieldType.Text, required = true });
        param["Description"].Add(new AddParams { type = SPFieldType.Text, required = true });

        // Create the really simple List.
        new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");
    }

这将在激活Web部件时创建一个列表,一个SharePoint 2010列表。 名称为“假列表”,我们看到我们传入了一些带有受尊重参数的列。 让我们看一下这个SPAPI.Lists.Create方法:

    public Create(SPFeatureReceiverProperties properties, Dictionary<string, List<AddParams>> columns, 
        string name, string description, SPListTemplateType type, string viewDescription)
    {

        SPSite siteCollection = properties.Feature.Parent as SPSite;
        if (siteCollection != null)
        {
            SPWeb web = siteCollection.RootWeb;
            Guid Listid = web.Lists.Add(name, description, type);
            web.Update();

            // Add the new list and the new content.
            SPList spList = web.Lists[name];
            foreach(KeyValuePair<string, List<AddParams>> col in columns){
                spList.Fields.Add(col.Key, col.Value[0].type, col.Value[0].required);
            }

            spList.Update();

            //Create the view? - Possibly remove me.
            System.Collections.Specialized.StringCollection stringCollection =
                new System.Collections.Specialized.StringCollection();

            foreach (KeyValuePair<string, List<AddParams>> col in columns)
            {
                stringCollection.Add(col.Key);
            }

            //Add the list.
            spList.Views.Add(viewDescription, stringCollection, @"", 100,
                true, true, Microsoft.SharePoint.SPViewCollection.SPViewType.Html, false);
            spList.Update();
        }
    }

我们可以在这里看到所有正在做的工作就是创建一个SPList对象供Sharepoint使用。 部署后,我们有了一个新列表,可以将其添加到页面中。 所以有什么问题?

在Php中,我可以将createNewList(SPFeatureReceiverProperties properties)传递给请求SPList类型的对象的函数,它将起作用(除非我错过了>。>的东西),在这里,就像那样,不,那不是SPList消失了。

所以我的问题是:

我必须更改什么才能创建列表并返回SPLIst对象? 是否像return new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");

因为这对我来说似乎是正确的。

更新资料

将方法签名转换为SPList并返回return new ....无效。

您需要从两个方法中返回一个SPList:

protected SPList createNewList(SPFeatureReceiverProperties properties)
{
    //Do the stuff

    SPList result = new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");
    return result;
}

public SPList Create(SPFeatureReceiverProperties properties, Dictionary<string, List<AddParams>> columns, 
    string name, string description, SPListTemplateType type, string viewDescription)
{
    // Do the stuff

    return spList;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM