Почему SiteCollection всегда нулевая?

У меня есть функция:

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

        SPList spList = null;

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

            // Add the new list and the new content.
            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();

            return spList;
        }

        return spList;
    }

Однако по какой-то причине при отладке siteCollection возвращается значение null, что заставляет его не делать то, что я хочу. Когда я проверяю properties.Feature.Parent Я вижу название сайта: 'Team Site'

Так почему же это ноль?

Обновить:

Этот проект является областью применения

4 ответа

Есть две возможные причины siteCollection возможно null после запуска строки запускается:

  1. properties.Feature.Parent является null
  2. properties.Feature.Parent это не SPSite (или получены из SPSite)

Если вы говорите, что вы можете увидеть в отладчике, что properties.Feature.Parent не является null когда siteCollection это означает, что properties.Feature.Parent это не SPSite пример.

Вы можете увидеть тип этого свойства при отладке, открыв окно Watch и введя выражение properties.Feature.Parent.GetType(),

Если вы пытаетесь отладить это, после этой строки SPSite siteCollection = properties.Feature.Parent as SPSite;, если вы запустите это либо в вашем окне просмотра или в непосредственном окне properties.Feature.Parent.GetType() вы должны быть в состоянии определить тип возвращаемого объекта, обратите внимание, что это должен быть совместимый тип (для SPSite), чтобы можно было привести его к типу, иначе вы получите нулевой объект.

Возможно, properties.Feature.Parent не является объектом SPSite. Код as SPSite установит siteCollection в Null если это объект SPWeb

Потому что это не вид SPSite? Так что, когда вы разыгрываете это как нечто, оно не становится нулевым?

Другие вопросы по тегам