コード例 #1
0
        private static void ValidateConfiguration(IExtensibilityConfiguration extensibility)
        {
            Assert.Equal("testPlugins", extensibility.PluginDirectory);
            Assert.NotEmpty(extensibility.SegmentedContracts);

            var contract = extensibility.SegmentedContracts.First();

            Assert.Equal("ISegmentedContract", contract.Name);
            Assert.NotEmpty(contract.RoutablePlugins);
            Assert.Equal(2, contract.RoutablePlugins.Count());

            var firstPlugin  = contract.RoutablePlugins.First();
            var secondPlugin = contract.RoutablePlugins.Skip(1).First();

            Assert.True(firstPlugin.Primary);
            Assert.False(secondPlugin.Primary);

            Assert.Equal(new Guid("BE157C54-2BC0-48B8-9E39-0AE53D8A4E61"), firstPlugin.Id);
            Assert.Equal(new Guid("F544EC74-919E-4167-A421-FA74223F49C5"), secondPlugin.Id);

            Assert.NotEmpty(secondPlugin.MethodClaims);

            var methodClaim = secondPlugin.MethodClaims.First();

            Assert.Equal("SomeOtherMethod", methodClaim);
        }
コード例 #2
0
ファイル: HostAdapter.cs プロジェクト: omniscientist/BadEcho
        /// <summary>
        /// Initializes a new instance of the <see cref="HostAdapter{T}"/> class.
        /// </summary>
        /// <param name="context">The context to access the routable adapters through.</param>
        /// <param name="configuration">
        /// Configuration for the Extensibility framework containing call-routable plugin information.
        /// </param>
        internal HostAdapter(PluginContext context, IExtensibilityConfiguration configuration)
        {
            Require.NotNull(context, nameof(context));
            Require.NotNull(configuration, nameof(configuration));

            IDictionary <Guid, IPluginAdapter <T> > adapters
                = context.Load <IPluginAdapter <T>, RoutableMetadataView>()
                  .ToDictionary(k => k.Metadata.PluginId, v => v.Value);

            IContractConfiguration contractConfiguration = FindContractConfiguration(configuration);

            _routingTable = CreateRoutingTable(contractConfiguration, adapters);
        }
コード例 #3
0
ファイル: HostAdapter.cs プロジェクト: omniscientist/BadEcho
        private static IContractConfiguration FindContractConfiguration(IExtensibilityConfiguration configuration)
        {
            string contractName = typeof(T).Name;

            IContractConfiguration?contractConfiguration
                = configuration.SegmentedContracts
                  .FirstOrDefault(c => c.Name == contractName);

            if (contractConfiguration == null)
            {
                throw new ArgumentException(Strings.NoContractInConfiguration.InvariantFormat(contractName),
                                            nameof(configuration));
            }

            return(contractConfiguration);
        }