Skip to content

Instantly share code, notes, and snippets.

@benfoster
benfoster / gist:8843578
Created February 6, 2014 12:50
Tenant Resolver API
// 1. Return identifiers using out parameter
public interface ITenantResolver<TTenant>
{
Task<TTenant> Resolve(string identifier, out string[] tenantIdentifiers);
}
// 2. Return ResolvedTenant object containing identifiers
public interface ITenantResolver<TTenant>
@benfoster
benfoster / index.html
Last active January 2, 2016 12:09
A LESS mixin for maintaining perfect vertical rhythm:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Baseline</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href='http://fonts.googleapis.com/css?family=Libre+Baskerville' rel='stylesheet' type='text/css'>
<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="less.js" type="text/javascript"></script>
</head>
@benfoster
benfoster / gist:8145486
Created December 27, 2013 10:56
Generating an entity id manually in RavenDB
public async void Run()
{
var orderId = await GenerateId<Order>();
var order = new Order(orderId, 10.99);
session.Store(order);
session.SaveChanges();
}
protected async Task<string> GenerateId<TEntity>()
@benfoster
benfoster / gist:7562771
Created November 20, 2013 13:02
Testing custom Authorize Attribute in ASP.NET Web API
using NSubstitute;
using NUnit.Framework;
using System.Collections.ObjectModel;
using System.Net;
using System.Net.Http;
using System.Security.Claims;
using System.Security.Principal;
using System.Threading;
using System.Web.Http;
using System.Web.Http.Controllers;
@benfoster
benfoster / gist:7247748
Created October 31, 2013 10:50
1 asp.net DI
public static class StructureMapConfig
{
public static void Register()
{
ObjectFactory.Initialize(cfg =>
{
cfg.Scan(scan =>
{
scan.LookForRegistries();
scan.TheCallingAssembly();
@benfoster
benfoster / gist:6900744
Last active December 25, 2015 02:09
A better "repository" pattern.
public interface IEntityStore
{
TEntity Get(Guid id) where TEntity : Entity
IQueryable<TEntity> Query() where TEntity : Entity
void Store<TEntity>(TEntity entity) where TEntity : Entity
void Delete<TEntity>(Guid id) where TEntity : Entity
}
@benfoster
benfoster / gist:6505740
Created September 10, 2013 06:39
Subscribing to NServiceBus 3.0 events from ASP.NET
private static IBus ConfigureBus()
{
return NServiceBus.Configure.With()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(true)
.UnicastBus()
.LoadMessageHandlers()
@benfoster
benfoster / gist:6211703
Created August 12, 2013 15:14
Dapper Session Per Request
public interface IDbSession
{
IDbConnection Connection { get; }
}
public class SqlSession : IDbSession
{
private static readonly object @lock = new object();
private readonly string connectionString;
@benfoster
benfoster / gist:5933215
Created July 5, 2013 09:17
ASP.NET MVC Action Filter for automatic handling of Ajax requests
using System.Net;
using System.Web.Mvc;
namespace Fabrik.Common.Web
{
public class HijaxAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (CanBeHijaxed(filterContext))