Exemplo n.º 1
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);
        }
Exemplo n.º 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:
                if (actualCardinality != EnumerableCardinality.One)
                {
                    throw new Exception(SR.Diagnostic_InternalExceptionMessage);
                }
                break;
            }

            return(ExportCardinalityCheckResult.Match);
        }
Exemplo n.º 3
0
        private T GetExportedValueCore <T>(string contractName, ImportCardinality cardinality)
        {
            Assumes.IsTrue(cardinality.IsAtMostOne());

            Export export = GetExportsCore(typeof(T), (Type)null, contractName, cardinality).SingleOrDefault();

            return((export != null) ? ExportServices.GetCastedExportedValue <T>(export) : default(T));
        }
        private T?GetExportedValueCore <T>(string?contractName, ImportCardinality cardinality)
        {
            if (!cardinality.IsAtMostOne())
            {
                throw new Exception(SR.Diagnostic_InternalExceptionMessage);
            }

            Export?export = GetExportsCore(typeof(T), (Type?)null, contractName, cardinality).SingleOrDefault();

            return((export != null) ? ExportServices.GetCastedExportedValue <T>(export) : default);