コード例 #1
0
ファイル: ExportServices.cs プロジェクト: pedrobsaila/runtime
        private static ExportCardinalityCheckResult MatchCardinality(EnumerableCardinality actualCardinality, ImportCardinality importCardinality)
        {
            switch (actualCardinality)
            {
            case EnumerableCardinality.Zero:
                if (importCardinality == ImportCardinality.ExactlyOne)
                {
                    return(ExportCardinalityCheckResult.NoExports);
                }
                break;

            case EnumerableCardinality.TwoOrMore:
                if (importCardinality.IsAtMostOne())
                {
                    return(ExportCardinalityCheckResult.TooManyExports);
                }
                break;

            default:
                if (actualCardinality != EnumerableCardinality.One)
                {
                    throw new Exception(SR.Diagnostic_InternalExceptionMessage);
                }
                break;
            }

            return(ExportCardinalityCheckResult.Match);
        }
コード例 #2
0
        private static ExportCardinalityCheckResult MatchCardinality(EnumerableCardinality actualCardinality, ImportCardinality importCardinality)
        {
            switch (actualCardinality)
            {
            case EnumerableCardinality.Zero:
                if (importCardinality == ImportCardinality.ExactlyOne)
                {
                    return(ExportCardinalityCheckResult.NoExports);
                }
                break;

            case EnumerableCardinality.TwoOrMore:
                if (importCardinality.IsAtMostOne())
                {
                    return(ExportCardinalityCheckResult.TooManyExports);
                }
                break;

            default:
                Assumes.IsTrue(actualCardinality == EnumerableCardinality.One);
                break;
            }

            return(ExportCardinalityCheckResult.Match);
        }
コード例 #3
0
        internal static ExportCardinalityCheckResult CheckCardinality(ImportDefinition definition, IEnumerable <Export> exports)
        {
            EnumerableCardinality actualCardinality = exports.GetCardinality();

            switch (actualCardinality)
            {
            case EnumerableCardinality.Zero:
                if (definition.Cardinality == ImportCardinality.ExactlyOne)
                {
                    return(ExportCardinalityCheckResult.NoExports);
                }
                break;

            case EnumerableCardinality.TwoOrMore:
                if (definition.Cardinality.IsAtMostOne())
                {
                    return(ExportCardinalityCheckResult.TooManyExports);
                }
                break;

            default:
                Assumes.IsTrue(actualCardinality == EnumerableCardinality.One);
                break;
            }

            return(ExportCardinalityCheckResult.Match);
        }
コード例 #4
0
ファイル: ExportServices.cs プロジェクト: pedrobsaila/runtime
        internal static ExportCardinalityCheckResult CheckCardinality <T>(ImportDefinition definition, IEnumerable <T>?enumerable)
        {
            EnumerableCardinality actualCardinality = (enumerable != null) ? enumerable.GetCardinality() : EnumerableCardinality.Zero;

            return(MatchCardinality(actualCardinality, definition.Cardinality));
        }