示例#1
0
        /// <summary>
        /// This is the definition of what it means for a field to pass all current restrictions.
        /// </summary>
        /// <param name="flid"></param>
        /// <returns></returns>
        bool Accept(int flid)
        {
            if (m_mdc.get_IsVirtual(flid))
            {
                return(false);
            }

            // LT-13636 -- The line below kept custom fields referencing custom lists from being valid browse columns.
            //if (m_destClsid != 0 && m_mdc.GetDstClsId(flid) != m_destClsid) is too strict! Should accept a subclass!
            if (m_destClsid != 0)
            {
                var flidDestClass     = m_mdc.GetDstClsId(flid);
                var acceptableClasses = ((IFwMetaDataCacheManaged)m_mdc).GetAllSubclasses(m_destClsid);
                if (!acceptableClasses.ContainsCollection(new int[] { flidDestClass }))
                {
                    return(false);
                }
            }

            switch (m_restrictions)
            {
            case "none":
                return(true);

            case "customOnly":
                return(((IFwMetaDataCacheManaged)m_mdc).IsCustom(flid));

            case "featureDefns":
                return(flid == FsFeatureSystemTags.kflidFeatures);
            }
            return(true);
        }