本文整理汇总了C#中DefaultDependencyResolver.Resolve方法的典型用法代码示例。如果您正苦于以下问题:C# DefaultDependencyResolver.Resolve方法的具体用法?C# DefaultDependencyResolver.Resolve怎么用?C# DefaultDependencyResolver.Resolve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DefaultDependencyResolver
的用法示例。
在下文中一共展示了DefaultDependencyResolver.Resolve方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DisposablesAreTrackedAndDisposed
public void DisposablesAreTrackedAndDisposed()
{
var resolver = new DefaultDependencyResolver();
resolver.Register(typeof(MyDisposable), () => new MyDisposable());
var disposable = resolver.Resolve<MyDisposable>();
resolver.Dispose();
Assert.True(disposable.Disposed);
}
示例2: SubscriptionDoesNotGetNewMessagesWhenTopicStoreOverrunByOtherStream
public void SubscriptionDoesNotGetNewMessagesWhenTopicStoreOverrunByOtherStream()
{
var dr = new DefaultDependencyResolver();
dr.Resolve<IConfigurationManager>().DefaultMessageBufferSize = 10;
using (var bus = new TestScaleoutBus(dr, streams: 2))
{
var subscriber = new TestSubscriber(new[] { "key" });
IDisposable subscription = null;
// The min fragment size is 8 and min fragments is 5
var expectedValues = Enumerable.Range(171, 8);
var cd = new OrderedCountDownRange<int>(expectedValues);
// This will overwrite the buffer ending up with (40 - 79) for stream 2
for (int i = 0; i < 80; i++)
{
bus.Publish(0, (ulong)i, new[] {
new Message("test", "key", i.ToString())
});
}
// This will overwrite the buffer with (140 - 179) for stream 1
for (int i = 100; i < 180; i++)
{
bus.Publish(1, (ulong)i, new[] {
new Message("test", "key", i.ToString())
});
}
try
{
subscription = bus.Subscribe(subscriber, "0,27|1,AA", (result, state) =>
{
foreach (var m in result.GetMessages())
{
int n = Int32.Parse(m.GetString());
cd.Expect(n);
}
return TaskAsyncHelper.True;
}, 100, null);
Assert.True(cd.Wait(TimeSpan.FromSeconds(10)));
}
finally
{
if (subscription != null)
{
subscription.Dispose();
}
}
}
}
示例3: Initialize
public void Initialize(int keepAlive,
int? connectionTimeout,
int? disconnectTimeout,
int? hearbeatInterval,
bool enableAutoRejoiningGroups)
{
var dr = new DefaultDependencyResolver();
_host.Configure(app =>
{
var configuration = dr.Resolve<IConfigurationManager>();
configuration.KeepAlive = keepAlive;
if (connectionTimeout != null)
{
configuration.ConnectionTimeout = TimeSpan.FromSeconds(connectionTimeout.Value);
}
if (disconnectTimeout != null)
{
configuration.DisconnectTimeout = TimeSpan.FromSeconds(disconnectTimeout.Value);
}
if (hearbeatInterval != null)
{
configuration.HeartbeatInterval = TimeSpan.FromSeconds(hearbeatInterval.Value);
}
if (enableAutoRejoiningGroups)
{
dr.Resolve<IHubPipeline>().EnableAutoRejoiningGroups();
}
app.MapHubs("/signalr", new HubConfiguration { Resolver = dr });
var config = new ConnectionConfiguration
{
Resolver = dr
};
app.MapConnection<MyBadConnection>("/ErrorsAreFun", config);
app.MapConnection<MyGroupEchoConnection>("/group-echo", config);
app.MapConnection<MySendingConnection>("/multisend", config);
app.MapConnection<MyReconnect>("/my-reconnect", config);
app.MapConnection<MyGroupConnection>("/groups", config);
app.MapConnection<MyRejoinGroupsConnection>("/rejoin-groups", config);
app.MapConnection<FilteredConnection>("/filter", config);
app.MapConnection<SyncErrorConnection>("/sync-error", config);
app.MapConnection<FallbackToLongPollingConnection>("/fall-back", config);
app.MapConnection<AddGroupOnConnectedConnection>("/add-group", config);
});
}
示例4: Initialize
public void Initialize(int? keepAlive,
int? connectionTimeout,
int? disconnectTimeout,
bool enableAutoRejoiningGroups)
{
var dr = new DefaultDependencyResolver();
_host.Configure(app =>
{
var configuration = dr.Resolve<IConfigurationManager>();
if (connectionTimeout != null)
{
configuration.ConnectionTimeout = TimeSpan.FromSeconds(connectionTimeout.Value);
}
if (disconnectTimeout != null)
{
configuration.DisconnectTimeout = TimeSpan.FromSeconds(disconnectTimeout.Value);
}
if (!keepAlive.HasValue)
{
configuration.KeepAlive = null;
}
// Set only if the keep-alive was changed from the default value.
else if (keepAlive.Value != -1)
{
configuration.KeepAlive = TimeSpan.FromSeconds(keepAlive.Value);
}
app.MapHubs("/signalr2/test", new HubConfiguration());
app.MapHubs("/signalr", new HubConfiguration { EnableDetailedErrors = true, Resolver = dr });
var config = new ConnectionConfiguration
{
Resolver = dr
};
app.MapConnection<MyBadConnection>("/ErrorsAreFun", config);
app.MapConnection<MyGroupEchoConnection>("/group-echo", config);
app.MapConnection<MySendingConnection>("/multisend", config);
app.MapConnection<MyReconnect>("/my-reconnect", config);
app.MapConnection<MyGroupConnection>("/groups", config);
app.MapConnection<MyRejoinGroupsConnection>("/rejoin-groups", config);
app.MapConnection<FilteredConnection>("/filter", config);
app.MapConnection<SyncErrorConnection>("/sync-error", config);
app.MapConnection<FallbackToLongPollingConnection>("/fall-back", config);
app.MapConnection<AddGroupOnConnectedConnection>("/add-group", config);
app.MapConnection<UnusableProtectedConnection>("/protected", config);
});
}
示例5: UntrackedDisposablesAreNotTracked
public void UntrackedDisposablesAreNotTracked()
{
var resolver = new DefaultDependencyResolver();
resolver.Register(typeof(MyUntrackedDisposable), () => new MyUntrackedDisposable());
var untrackedDisposable = resolver.Resolve<MyUntrackedDisposable>();
var untrackedDisposableWeakRef = new WeakReference<MyUntrackedDisposable>(untrackedDisposable);
untrackedDisposable = null;
GC.Collect();
GC.WaitForPendingFinalizers();
Assert.False(untrackedDisposableWeakRef.TryGetTarget(out untrackedDisposable));
}
示例6: FarmDisconnectRaisesUncleanDisconnects
public async Task FarmDisconnectRaisesUncleanDisconnects()
{
// Each node shares the same bus but are independent servers
const int nodeCount = 3;
var counters = new Infrastructure.PerformanceCounterManager();
var configurationManager = new DefaultConfigurationManager();
configurationManager.DisconnectTimeout = TimeSpan.FromSeconds(6);
using (EnableDisposableTracing())
using (var bus = new MessageBus(new StringMinifier(), new TraceManager(), counters, configurationManager, 5000))
using (var loadBalancer = new LoadBalancer(nodeCount))
{
var broadcasters = new List<IConnection>();
var disconnectCounter = new DisconnectCounter();
loadBalancer.Configure(app =>
{
var resolver = new DefaultDependencyResolver();
resolver.Register(typeof(IMessageBus), () => bus);
resolver.Register(typeof(IConfigurationManager), () => configurationManager);
resolver.Register(typeof(FarmConnection), () => new FarmConnection(disconnectCounter));
var connectionManager = resolver.Resolve<IConnectionManager>();
broadcasters.Add(connectionManager.GetConnectionContext<FarmConnection>().Connection);
app.MapSignalR<FarmConnection>("/echo", new ConnectionConfiguration
{
Resolver = resolver
});
});
var transport = new Client.Transports.LongPollingTransport(loadBalancer);
var connection = new Client.Connection("http://goo/echo");
await connection.Start(transport);
for (int i = 0; i < nodeCount; i++)
{
broadcasters[i].Broadcast(String.Format("From Node {0}: {1}", i, i + 1)).Wait();
await Task.Delay(TimeSpan.FromSeconds(1));
}
((Client.IConnection)connection).Disconnect();
await Task.Delay(TimeSpan.FromTicks(TimeSpan.FromSeconds(5).Ticks * nodeCount));
Assert.Equal(0, disconnectCounter.CleanDisconnectCount);
Assert.Equal(3, disconnectCounter.UncleanDisconnectCount);
}
}
示例7: HubReferencesAreNotRetained
public void HubReferencesAreNotRetained()
{
var resolver = new DefaultDependencyResolver();
resolver.Register(typeof(DontLeakMeHub), () => new DontLeakMeHub());
var hub = resolver.Resolve<DontLeakMeHub>();
Assert.NotNull(hub);
var hubWeakRef = new WeakReference<DontLeakMeHub>(hub);
hub.Dispose();
hub = null;
GC.Collect();
GC.WaitForPendingFinalizers();
Assert.False(hubWeakRef.TryGetTarget(out hub));
}
示例8: FailedWriteCompletesRequestAfterDisconnectTimeout
public void FailedWriteCompletesRequestAfterDisconnectTimeout()
{
var request = new Mock<IRequest>();
var response = new Mock<IResponse>();
var qs = new NameValueCollection();
request.Setup(m => m.QueryString).Returns(new NameValueCollectionWrapper(qs));
var url = new Uri("http://test/echo/connect");
request.Setup(m => m.Url).Returns(url);
request.Setup(m => m.LocalPath).Returns(url.LocalPath);
var cts = new CancellationTokenSource();
response.Setup(m => m.CancellationToken).Returns(cts.Token);
response.Setup(m => m.Flush()).Returns(TaskAsyncHelper.Empty);
var resolver = new DefaultDependencyResolver();
var config = resolver.Resolve<IConfigurationManager>();
var hostContext = new HostContext(request.Object, response.Object);
config.DisconnectTimeout = TimeSpan.FromSeconds(6);
var transport = new Mock<ForeverTransport>(hostContext, resolver)
{
CallBase = true
};
transport.Object.ConnectionId = "1";
transport.Setup(m => m.Send(It.IsAny<PersistentResponse>()))
.Returns(() =>
{
var task = TaskAsyncHelper.FromError(new Exception());
cts.Cancel();
return task;
});
var connectionManager = new ConnectionManager(resolver);
var connection = connectionManager.GetConnectionCore("Foo");
var wh = new ManualResetEventSlim();
transport.Object.ProcessRequest(connection).ContinueWith(task =>
{
wh.Set();
});
connection.Broadcast("Some message");
// 6 second disconnect timeout + 5 second disconnect threshold
// + up to 1 second for the heartbeat to check + 3 second leeway
Assert.True(wh.Wait(TimeSpan.FromSeconds(15)));
}
示例9: DisconnectFiresForHubsWhenConnectionGoesAway
public void DisconnectFiresForHubsWhenConnectionGoesAway()
{
using (var host = new MemoryHost())
{
var dr = new DefaultDependencyResolver();
var configuration = dr.Resolve<IConfigurationManager>();
var connectWh = new ManualResetEventSlim();
var disconnectWh = new ManualResetEventSlim();
host.Configure(app =>
{
var config = new HubConfiguration
{
Resolver = dr
};
app.MapHubs("/signalr", config);
configuration.DisconnectTimeout = TimeSpan.Zero;
configuration.HeartbeatInterval = TimeSpan.FromSeconds(5);
dr.Register(typeof(MyHub), () => new MyHub(connectWh, disconnectWh));
});
var connection = new Client.Hubs.HubConnection("http://foo/");
connection.CreateHubProxy("MyHub");
// Maximum wait time for disconnect to fire (3 heart beat intervals)
var disconnectWait = TimeSpan.FromTicks(configuration.HeartbeatInterval.Ticks * 3);
connection.Start(host).Wait();
Assert.True(connectWh.Wait(TimeSpan.FromSeconds(10)), "Connect never fired");
connection.Stop();
Assert.True(disconnectWh.Wait(disconnectWait), "Disconnect never fired");
}
}
示例10: DisconnectFiresForPersistentConnectionWhenClientCallsStop
public async Task DisconnectFiresForPersistentConnectionWhenClientCallsStop()
{
using (var host = new MemoryHost())
{
var connectWh = new AsyncManualResetEvent();
var disconnectWh = new AsyncManualResetEvent();
var dr = new DefaultDependencyResolver();
var configuration = dr.Resolve<IConfigurationManager>();
host.Configure(app =>
{
var config = new ConnectionConfiguration
{
Resolver = dr
};
app.MapSignalR<MyConnection>("/echo", config);
configuration.DisconnectTimeout = TimeSpan.FromSeconds(6);
dr.Register(typeof(MyConnection), () => new MyConnection(connectWh, disconnectWh));
});
var connection = new Client.Connection("http://foo/echo");
// Maximum wait time for disconnect to fire (3 heart beat intervals)
var disconnectWait = TimeSpan.FromTicks(configuration.HeartbeatInterval().Ticks * 3);
await connection.Start(host);
Assert.True(await connectWh.WaitAsync(TimeSpan.FromSeconds(10)), "Connect never fired");
connection.Stop();
Assert.True(await disconnectWh.WaitAsync(disconnectWait), "Disconnect never fired");
}
}
示例11: MultipleSubscribeTopicCallsToDeadTopicWork
public void MultipleSubscribeTopicCallsToDeadTopicWork()
{
var dr = new DefaultDependencyResolver();
var configuration = dr.Resolve<IConfigurationManager>();
Topic topic;
configuration.DisconnectTimeout = TimeSpan.FromSeconds(6);
configuration.KeepAlive = null;
using (var bus = new TestMessageBus(dr))
{
var subscriber = new TestSubscriber(new[] { "key" });
int count = 0;
// Make sure the topic is in the no subs state
bus.Subscribe(subscriber, null, (result, state) => TaskAsyncHelper.True, 10, null)
.Dispose();
bus.BeforeTopicCreated = (key) =>
{
bus.Topics.TryGetValue(key, out topic);
if (count == 1)
{
// Should have been removed by our double garbage collect in BeforeTopicMarked
Assert.Null(topic);
}
if (count == 3)
{
// Ensure that we have a topic now created from the original thread
Assert.NotNull(topic);
}
};
bus.BeforeTopicMarked = (key, t) =>
{
count++;
if (count == 1)
{
bus.GarbageCollectTopics();
bus.GarbageCollectTopics();
// We garbage collect twice to mark the current topic as dead (it will remove it from the topics list)
Assert.Equal(t.State, TopicState.Dead);
bus.SubscribeTopic("key");
// Topic should still be dead
Assert.Equal(t.State, TopicState.Dead);
Assert.Equal(count, 2);
// Increment up to 3 so we don't execute same code path in after marked
count++;
}
if (count == 2)
{
// We've just re-created the topic from the second bus.SubscribeTopic so we should have 0 subscriptions
Assert.Equal(t.State, TopicState.NoSubscriptions);
}
if (count == 4)
{
// Ensure that we pulled the already created subscription (therefore it has subscriptions)
Assert.Equal(t.State, TopicState.HasSubscriptions);
}
};
bus.AfterTopicMarked = (key, t, state) =>
{
if (count == 2)
{
// After re-creating the topic from the second bus.SubscribeTopic we should then move the topic state
// into the has subscriptions state
Assert.Equal(state, TopicState.HasSubscriptions);
}
if (count == 3)
{
Assert.Equal(state, TopicState.Dead);
}
};
bus.SubscribeTopic("key");
Assert.Equal(1, bus.Topics.Count);
Assert.True(bus.Topics.TryGetValue("key", out topic));
Assert.Equal(TopicState.HasSubscriptions, topic.State);
}
}
示例12: SubscribingTopicAfterNoSubscriptionsStateSetsStateToHasSubscription
public void SubscribingTopicAfterNoSubscriptionsStateSetsStateToHasSubscription()
{
var dr = new DefaultDependencyResolver();
var configuration = dr.Resolve<IConfigurationManager>();
configuration.DisconnectTimeout = TimeSpan.FromSeconds(6);
using (var bus = new MessageBus(dr))
{
var subscriber = new TestSubscriber(new[] { "key" });
// Make sure the topic is in the no subs state
bus.Subscribe(subscriber, null, (result, state) => TaskAsyncHelper.True, 10, null)
.Dispose();
Topic topic = bus.SubscribeTopic("key");
Assert.Equal(1, bus.Topics.Count);
Assert.True(bus.Topics.TryGetValue("key", out topic));
Assert.Equal(TopicState.HasSubscriptions, topic.State);
}
}
示例13: GarbageCollectingTopicsAfterGettingTopicsNoops
public void GarbageCollectingTopicsAfterGettingTopicsNoops()
{
var dr = new DefaultDependencyResolver();
var configuration = dr.Resolve<IConfigurationManager>();
configuration.KeepAlive = null;
using (var bus = new MessageBus(dr))
{
var subscriber = new TestSubscriber(new[] { "key" });
IDisposable subscription = null;
bus.AfterTopicMarkedSuccessfully = (key, topic) =>
{
bus.GarbageCollectTopics();
};
try
{
subscription = bus.Subscribe(subscriber, null, (result, state) => TaskAsyncHelper.True, 10, null);
Assert.Equal(1, bus.Topics.Count);
Topic topic;
Assert.True(bus.Topics.TryGetValue("key", out topic));
Assert.Equal(TopicState.HasSubscriptions, topic.State);
}
finally
{
if (subscription != null)
{
subscription.Dispose();
}
}
}
}
示例14: RunConnectionReceiveLoopTest
private static void RunConnectionReceiveLoopTest()
{
string payload = GetPayload();
var dr = new DefaultDependencyResolver();
MeasureStats((MessageBus)dr.Resolve<IMessageBus>());
var connectionManager = new ConnectionManager(dr);
var context = connectionManager.GetConnectionContext<StressConnection>();
for (int i = 0; i < _clients; i++)
{
ThreadPool.QueueUserWorkItem(state =>
{
Interlocked.Increment(ref _clientsRunning);
var transportConnection = (ITransportConnection)context.Connection;
ReceiveLoop(transportConnection, null);
}, i);
}
for (var i = 1; i <= _senders; i++)
{
ThreadPool.QueueUserWorkItem(_ =>
{
StartSendLoop(i.ToString(), (source, key, value) => context.Connection.Broadcast(value), payload);
});
}
}
示例15: PublishingDoesNotCreateTopic
public void PublishingDoesNotCreateTopic()
{
var dr = new DefaultDependencyResolver();
var configuration = dr.Resolve<IConfigurationManager>();
configuration.KeepAlive = null;
using (var bus = new MessageBus(dr))
{
bus.Publish("test", "key", "1").Wait();
Assert.Equal(0, bus.Topics.Count);
Assert.False(bus.Topics.ContainsKey("key"));
}
}