本文整理汇总了C#中IContainer.IsRegistered方法的典型用法代码示例。如果您正苦于以下问题:C# IContainer.IsRegistered方法的具体用法?C# IContainer.IsRegistered怎么用?C# IContainer.IsRegistered使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IContainer
的用法示例。
在下文中一共展示了IContainer.IsRegistered方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Instance
public Instance(IContainer container, XDoc anInstanceXmlConfig)
{
ContainerBuilder builder = new ContainerBuilder();
var c = new XDocAutofacContainerConfigurator(anInstanceXmlConfig["components"], DreamContainerScope.Factory);
c.Configure(container);
if (!container.IsRegistered<ISettingsController>())
{
XmlSettingsController controller = new XmlSettingsController(anInstanceXmlConfig);
builder.Register<ISettingsController>(controller);
}
if (!container.IsRegistered<IScoreController>())
{
builder.Register<ScoreController>().As<IScoreController>();
}
if (!container.IsRegistered<IUserController>())
{
builder.Register<UserController>().As<IUserController>();
}
if (!container.IsRegistered<ISourceController>())
{
builder.Register<SourceController>().As<ISourceController>();
}
if (!container.IsRegistered<IPlayController>())
{
builder.Register<PlayController>().As<IPlayController>();
}
if (!container.IsRegistered<IConverterFactory>())
{
builder.Register<ConverterFactory>().As<IConverterFactory>();
}
if (!container.IsRegistered<IIndexController>())
{
builder.Register<IndexController>().As<IIndexController>();
}
if (!container.IsRegistered<ISourcePageController>())
{
builder.Register<SourcePageController>().As<ISourcePageController>();
}
builder.Build(container);
ScoreController = container.Resolve<IScoreController>();
UserController = container.Resolve<IUserController>();
SourceController = container.Resolve<ISourceController>();
PlayController = container.Resolve<IPlayController>();
ConverterFactory = container.Resolve<IConverterFactory>();
IndexController = container.Resolve<IIndexController>();
IndexController.Instance = this;
SourcePageController = container.Resolve<ISourcePageController>();
}
示例2: Base
protected Base(IContainer container)
{
if (!container.IsRegistered<SFXUtility>())
throw new InvalidOperationException("SFXUtility");
if (!container.IsRegistered<ILogger>())
throw new InvalidOperationException("ILogger");
IoC = container;
var sfx = IoC.Resolve<SFXUtility>();
Logger = IoC.Resolve<ILogger>();
BaseMenu = sfx.Menu;
BaseName = sfx.Name;
}
示例3: AutofacServiceLocator
public AutofacServiceLocator(IContainer container)
{
if (container == null)
throw new ArgumentNullException("container");
_container = container;
if (container.IsRegistered<ILifetimeScopeProvider>())
{
LifetimeScopeProvider =
container.Resolve<ILifetimeScopeProvider>(new NamedParameter("container", container));
}
}
示例4: Start
//--- Methods ---
protected override Yield Start(XDoc config, IContainer container, Result result)
{
yield return Coroutine.Invoke(base.Start, config, new Result());
_defaultSettings = new SmtpSettings { Host = config["smtp-host"].AsText };
if(string.IsNullOrEmpty(_defaultSettings.Host)) {
_defaultSettings.Host = "localhost";
}
_log.DebugFormat("Smtp Host: {0}", _defaultSettings.Host);
// Note (arnec): ssl requires mono 2.0 and likely root certificate import via 'mozroots --import --ask-remove --machine'
_defaultSettings.EnableSsl = config["use-ssl"].AsBool ?? false;
if(config["smtp-port"].AsInt.HasValue) {
_defaultSettings.Port = config["smtp-port"].AsInt.Value;
}
_defaultSettings.AuthUser = config["smtp-auth-user"].AsText;
_defaultSettings.AuthPassword = config["smtp-auth-password"].AsText;
_clientFactory = container.IsRegistered<ISmtpClientFactory>()
? container.Resolve<ISmtpClientFactory>()
: new SmtpClientFactory();
// get an apikey for accessing the services without it's private/internal keys
_emailApikey = config["apikey"].AsText;
result.Return();
}
示例5: Start
//--- Methods ---
protected override Yield Start(XDoc config, IContainer container, Result result)
{
yield return Coroutine.Invoke(base.Start, config, container, new Result());
_log.DebugFormat("starting {0}", Self.Uri);
// make sure we have an IPubSubDispatcher registered
ContainerBuilder builder = null;
if(!container.IsRegistered<IPubSubDispatcher>()) {
builder = new ContainerBuilder();
builder.Register<Dispatcher>().As<IPubSubDispatcher>().ServiceScoped();
}
if(!container.IsRegistered<IPubSubDispatchQueueRepository>()) {
var localQueuePath = config["queue-path"].AsText;
builder = builder ?? new ContainerBuilder();
var retryTime = (config["failed-dispatch-retry"].AsInt ?? 60).Seconds();
if(string.IsNullOrEmpty(localQueuePath)) {
_log.Debug("no queue persistent path provided, using memory queues");
builder.Register(new MemoryPubSubDispatchQueueRepository(TimerFactory, retryTime))
.As<IPubSubDispatchQueueRepository>();
} else {
builder.Register(new PersistentPubSubDispatchQueueRepository(localQueuePath, TimerFactory, retryTime))
.As<IPubSubDispatchQueueRepository>();
}
}
if(builder != null) {
builder.Build(container);
}
// initialize dispatcher
_dispatcher = container.Resolve<IPubSubDispatcher>(
TypedParameter.From(new DispatcherConfig {
ServiceUri = Self,
ServiceAccessCookie = DreamCookie.NewSetCookie("service-key", InternalAccessKey, Self.Uri),
ServiceCookies = Cookies,
ServiceConfig = config
})
);
// check for upstream chaining
if(!config["upstream"].IsEmpty) {
_dispatcher.CombinedSet.AsDocument();
// we've been provided 1 or more upstream pubsub services that we need to subscribe to
foreach(XDoc upstream in config["upstream/uri"]) {
int retry = 0;
while(true) {
retry++;
_log.DebugFormat("setting up upstream chain to {0} (attempt {1})", upstream, retry);
XUri upstreamUri = upstream.AsUri;
// subscribe with an empty set, since there are no child subs at Start, but we need a place to subscribe updates on
XDoc emptySub = new XDoc("subscription-set").Elem("uri.owner", Self.Uri);
Result<DreamMessage> upstreamResult;
yield return upstreamResult = Plug.New(upstreamUri).Post(emptySub, new Result<DreamMessage>(TimeSpan.MaxValue));
if(upstreamResult.Value.IsSuccessful) {
XUri location = new XUri(upstreamResult.Value.Headers.Location).WithoutQuery();
string accessKey = upstreamResult.Value.ToDocument()["access-key"].AsText;
// subscribe the resulting location to our pubsub:///* changes
XDoc subscribeToChanges = new XDoc("subscription-set")
.Elem("uri.owner", upstreamUri.WithScheme("upstream"))
.Start("subscription")
.Attr("id", "1")
.Elem("channel", "pubsub://*/*")
.Add(DreamCookie.NewSetCookie("access-key", accessKey, location).AsSetCookieDocument)
.Start("recipient").Elem("uri", upstreamResult.Value.Headers.Location).End()
.End();
_dispatcher.RegisterSet(StringUtil.CreateAlphaNumericKey(8), subscribeToChanges, StringUtil.CreateAlphaNumericKey(8));
break;
}
_log.WarnFormat("unable to subscribe to upstream pubsub (attempt {0}): {1}", retry, upstreamResult.Value.Status);
if(retry >= 3) {
_log.WarnFormat("giving up on upstream chaining to {0}", upstream);
break;
}
yield return Async.Sleep(TimeSpan.FromMilliseconds(500));
continue;
}
}
}
if(!config["downstream"].IsEmpty) {
// we've been provided 1 or more downstream pubsub services that we need to get to subscribe to us
foreach(XDoc downstream in config["downstream/uri"]) {
int retry = 0;
while(true) {
retry++;
_log.DebugFormat("setting up downstream chain to {0} (attempt {1})", downstream, retry);
Result<DreamMessage> downstreamResult;
yield return downstreamResult = Plug.New(downstream.AsUri).Get(new Result<DreamMessage>(TimeSpan.MaxValue));
if(downstreamResult.Value.IsSuccessful) {
XDoc downstreamSet = downstreamResult.Value.ToDocument();
Tuplet<PubSubSubscriptionSet, bool> set = _dispatcher.RegisterSet(StringUtil.CreateAlphaNumericKey(8), downstreamSet, StringUtil.CreateAlphaNumericKey(8));
XUri locationUri = Self.At("subscribers", set.Item1.Location).Uri;
XUri featureUri = Self.At("subscribers").Uri;
_log.DebugFormat("downstream chain to {0} registered {1}", downstream, set.Item1.Location);
XDoc subscribeToChanges = new XDoc("subscription-set")
.Elem("uri.owner", Self.Uri)
.Start("subscription")
//.........这里部分代码省略.........
示例6: Start
//--- Methods ---
protected override Yield Start(XDoc config, IContainer container, Result result)
{
yield return Coroutine.Invoke(base.Start, config, new Result());
// are we a private storage service?
_private = config["sid"].Contents == "sid://mindtouch.com/2010/10/dream/s3.storage.private";
_log.DebugFormat("storage is {0}", _private ? "private" : "public");
// is the root blocked from access?
_privateRoot = config["private-root"].AsBool.GetValueOrDefault();
_log.DebugFormat("storage root is {0}accessible", _privateRoot ? "not " : "");
// set up S3 client
var s3Config = new AmazonS3ClientConfig() {
S3BaseUri = new XUri(config["baseuri"].AsText.IfNullOrEmpty("http://s3.amazonaws.com")),
Bucket = config["bucket"].AsText,
Delimiter = "/",
RootPath = config["folder"].AsText,
PrivateKey = config["privatekey"].AsText,
PublicKey = config["publickey"].AsText,
Timeout = TimeSpan.FromSeconds(config["timeout"].AsDouble ?? DEFAULT_S3_TIMEOUT)
};
if(string.IsNullOrEmpty(s3Config.Bucket)) {
throw new ArgumentException("missing configuration parameter 'bucket'");
}
if(string.IsNullOrEmpty(s3Config.PrivateKey)) {
throw new ArgumentException("missing configuration parameter 'privatekey'");
}
if(string.IsNullOrEmpty(s3Config.PublicKey)) {
throw new ArgumentException("missing configuration parameter 'publickey'");
}
if(!container.IsRegistered(typeof(IAmazonS3Client))) {
// Note (arnec): registering the client in the container to hand over disposal control to the container
var builder = new ContainerBuilder();
builder.Register<AmazonS3Client>().As<IAmazonS3Client>();
builder.Build(container);
}
_s3Client = container.Resolve<IAmazonS3Client>(TypedParameter.From(s3Config));
result.Return();
}
示例7: Start
//--- Methods ---
protected override Yield Start(XDoc config, IContainer container, Result result) {
yield return Coroutine.Invoke(base.Start, config, new Result());
// set up plug for phpscript that will handle the notifications
_emailer = Plug.New(config["uri.emailer"].AsUri);
// set up plug deki, so we can validate users
_deki = Plug.New(config["uri.deki"].AsUri);
// get the apikey, which we will need as a subscription auth token for subscriptions not done on behalf of a user
_apikey = config["apikey"].AsText;
_cache = new PageChangeCache(_deki.With("apikey", _apikey), TimeSpan.FromSeconds(config["page-cache-ttl"].AsInt ?? 2));
if(!container.IsRegistered<IPageSubscriptionInstance>()) {
var builder = new ContainerBuilder();
builder.Register<PageSubscriptionInstance>().As<IPageSubscriptionInstance>().FactoryScoped();
builder.Build(container);
}
// TODO (arnec): this should be hitting the API to retrieve resources
// resource manager for email template
var resourcePath = Config["resources-path"].AsText;
if(!string.IsNullOrEmpty(resourcePath)) {
_resourceManager = new PlainTextResourceManager(Environment.ExpandEnvironmentVariables(resourcePath));
} else {
// creating a test resource manager
_log.WarnFormat("'resource-path' was not defined in Config, using a test resource manager for email templating");
var testSet = new TestResourceSet {
{"Notification.Page.email-subject", "Page Modified"},
{"Notification.Page.email-header", "The following pages have changed:"}
};
_resourceManager = new PlainTextResourceManager(testSet);
}
// set up subscription for pubsub
var subscriptionSet = new XDoc("subscription-set")
.Elem("uri.owner", Self.Uri.AsServerUri().ToString())
.Start("subscription")
.Elem("channel", "event://*/deki/users/*")
.Add(DreamCookie.NewSetCookie("service-key", InternalAccessKey, Self.Uri).AsSetCookieDocument)
.Start("recipient")
.Attr("authtoken", _apikey)
.Elem("uri", Self.Uri.AsServerUri().At("updateuser").ToString())
.End()
.End()
.Start("subscription")
.Elem("channel", "event://*/deki/pages/create")
.Elem("channel", "event://*/deki/pages/update")
.Elem("channel", "event://*/deki/pages/delete")
.Elem("channel", "event://*/deki/pages/revert")
.Elem("channel", "event://*/deki/pages/move")
.Elem("channel", "event://*/deki/pages/tags/update")
.Elem("channel", "event://*/deki/pages/dependentschanged/comments/create")
.Elem("channel", "event://*/deki/pages/dependentschanged/comments/update")
.Elem("channel", "event://*/deki/pages/dependentschanged/comments/delete")
.Elem("channel", "event://*/deki/pages/dependentschanged/files/create")
.Elem("channel", "event://*/deki/pages/dependentschanged/files/update")
.Elem("channel", "event://*/deki/pages/dependentschanged/files/delete")
.Elem("channel", "event://*/deki/pages/dependentschanged/files/properties/*")
.Elem("channel", "event://*/deki/pages/dependentschanged/files/restore")
.Add(DreamCookie.NewSetCookie("service-key", InternalAccessKey, Self.Uri).AsSetCookieDocument)
.Start("recipient")
.Attr("authtoken", _apikey)
.Elem("uri", Self.Uri.AsServerUri().At("notify").ToString())
.End()
.End();
Result<DreamMessage> subscribe;
yield return subscribe = PubSub.At("subscribers").PostAsync(subscriptionSet);
string accessKey = subscribe.Value.ToDocument()["access-key"].AsText;
XUri location = subscribe.Value.Headers.Location;
Cookies.Update(DreamCookie.NewSetCookie("access-key", accessKey, location), null);
_subscriptionLocation = Plug.New(location.AsLocalUri().WithoutQuery());
_log.DebugFormat("set up initial subscription location at {0}", _subscriptionLocation.Uri);
// set up notification accumulator queue
TimeSpan accumulationMinutes = TimeSpan.FromSeconds(config["accumulation-time"].AsInt ?? 10 * 60);
_log.DebugFormat("Initializing queue with {0:0.00} minute accumulation", accumulationMinutes.TotalMinutes);
_notificationQueue = new NotificationDelayQueue(accumulationMinutes, SendEmail);
result.Return();
}