Skip to content

Instantly share code, notes, and snippets.

View droyad's full-sized avatar

Robert Wagner droyad

View GitHub Profile
protected override void Load(ContainerBuilder builder)
{
builder.Register(CreatedDbFunc).As<Func<Owned<IDb>>>().InstancePerDependency();
builder.Register(c => CreatedDbWithConnectionFunc()).As<Func<DbConnection, Owned<IDb>>>().InstancePerDependency();
builder.RegisterType<CurrentDatabase>().InstancePerMatchingLifetimeScope(LifetimeScopes.Workspace);
}
private Func<Owned<IDb>> CreatedDbFunc(IComponentContext context)
{
@droyad
droyad / gist:4711796
Created February 5, 2013 03:01
Testing Autofac registrations
var sb = new StringBuilder();
foreach (var src in container.ComponentRegistry.Sources.Select(s => s.ToString()).OrderBy(s => s))
sb.AppendLine(src);
sb.AppendLine();
foreach (var reg in container.ComponentRegistry.Registrations.OrderBy(r => r.Activator.LimitType.FullName))
{
sb.AppendLine(reg.Activator.LimitType.FullName);
sb.Append(" ").AppendLine(reg.Lifetime.GetType().Name);
void Main()
{
var result = MakeCalls("ABCDEFGHIJKLMNOP", c => CallWebService(c), 2).Result;
result.Dump();
}
public async System.Threading.Tasks.Task<string> CallWebService(char c)
{
await System.Threading.Tasks.Task.Delay(2000);
return c.ToString() + DateTime.Now.Second.ToString();
public static void ForSingleMaybe<T>(this IEnumerable<T> sequence, Action<T> action)
{
using(var enumerator = sequence.GetEnumerator())
{
if(!enumerator.MoveNext())
return;
var item = enumerator.Current;
if(enumerator.MoveNext())
throw new InvalidOperationException("Sequence contains too many elements");
@droyad
droyad / gist:5627410
Last active December 17, 2015 14:49
Registering a WebAPI filter with #autofac based on action method attributes
builder.RegisterAuthorizationFilterForAttribute<MustBeLoggedInFilter, MustBeLoggedInAttribute>(ThisAssembly);
public static class AutofacExtensions
{
public static IRegistrationBuilder<object, IConcreteActivatorData, SingleRegistrationStyle> RegisterAuthorizationFilterForAttribute<TService, TAttribute>(
this ContainerBuilder builder,
params Assembly[] controllerAssemblies
) where TAttribute : Attribute
@droyad
droyad / gist:5899850
Last active December 19, 2015 04:49
Reimplementation of NewGuid()
public static Guid NewHotGuid()
{
using (var client = new HttpClient())
{
var result = client.GetStringAsync("http://secretgeek.net/HotGuids/").Result;
var guid = Regex.Match(result, @"id='guid'\>\{([^\}]+)").Groups[1].Value;
return Guid.Parse(guid);
}
}
@droyad
droyad / gist:6136445
Created August 2, 2013 00:02
Knockout binding for Tagit
ko.bindingHandlers.tags = {
init: function (element, valueAccessor, allBindingsAccessor) {
var bind = function() {
var observable = valueAccessor();
observable($(element).tagit("assignedTags").join(','));
};
var options = {
allowSpaces: true,
@droyad
droyad / knockout-tags.js
Created August 2, 2013 00:02
Knockout binding for Tagit
ko.bindingHandlers.tags = {
init: function (element, valueAccessor, allBindingsAccessor) {
var bind = function() {
var observable = valueAccessor();
observable($(element).tagit("assignedTags").join(','));
};
var options = {
allowSpaces: true,
@droyad
droyad / gist:6162191
Created August 6, 2013 05:13
Exception format
public static string Format(this Exception exception, bool includeStackTrace = false)
{
var sb = new StringBuilder();
Format(sb, exception, false);
if (includeStackTrace)
{
sb.AppendLine();
Format(sb, exception, true);
}
return sb.ToString();
private void RestoreDatabase(Server server)
{
Program.Log("Restoring {0} on {1}".With(_options.Database, _options.Server));
if (server.Databases[_options.Database] != null)
server.KillAllProcesses(_options.Database);
else
new Database(server, _options.Database).Create();