Skip to content

Instantly share code, notes, and snippets.

@scottmcarthur
Last active August 29, 2015 13:55
Show Gist options
  • Save scottmcarthur/8775092 to your computer and use it in GitHub Desktop.
Save scottmcarthur/8775092 to your computer and use it in GitHub Desktop.
ServiceStack IoC Lifetime Test (v3)
using System;
using ServiceStack.ServiceInterface;
using ServiceStack.ServiceHost;
using ServiceStack.WebHost.Endpoints;
using Funq;
namespace Testv3
{
class MainClass
{
public static void Main()
{
// Very basic console host
var appHost = new AppHost();
appHost.Init();
appHost.Start("http://*:9000/");
Console.ReadKey();
}
}
public class AppHost : AppHostHttpListenerBase
{
public AppHost() : base("Test Service", typeof(TestApp).Assembly) {}
public override void Configure(Container container)
{
container.RegisterAutoWiredAs<AutoStatic, IAutoStatic>();
container.RegisterAutoWiredAs<AutoRequest, IAutoRequest>().ReusedWithin(ReuseScope.Request);
container.Register<IResolveStatic>(c => new ResolveStatic());
container.Register<IResolveRequest>(c => new ResolveRequest()).ReusedWithin(ReuseScope.Request);
}
}
public static class TestApp
{
[Route("/Test", "GET")]
public class TestRequest : IReturnVoid
{
}
public class TestController : Service
{
public IAutoStatic AutoStatic { get; set; }
public IAutoRequest AutoRequest { get; set; }
IResolveStatic ResolveStatic { get; set; }
IResolveRequest ResolveRequest { get; set; }
public void Get(TestRequest request)
{
ResolveStatic = EndpointHost.TryResolve<IResolveStatic>();
ResolveRequest = EndpointHost.TryResolve<IResolveRequest>();
Console.WriteLine("-NEW REQUEST-");
Console.WriteLine("Auto Static {0}", AutoStatic.CreatedAt);
Console.WriteLine("Resolve Static {0}", ResolveStatic.CreatedAt);
Console.WriteLine("Auto Request {0}", AutoRequest.CreatedAt);
Console.WriteLine("Resolve Request {0}", ResolveRequest.CreatedAt);
}
}
}
public interface IAutoStatic
{
string CreatedAt { get; set; }
}
public interface IAutoRequest
{
string CreatedAt { get; set; }
}
public interface IResolveStatic
{
string CreatedAt { get; set; }
}
public interface IResolveRequest
{
string CreatedAt { get; set; }
}
public class AutoStatic : IAutoStatic
{
public string CreatedAt { get; set; }
public AutoStatic() { CreatedAt = DateTime.Now.ToString(); }
}
public class AutoRequest : IAutoRequest
{
public string CreatedAt { get; set; }
public AutoRequest() { CreatedAt = DateTime.Now.ToString(); }
}
public class ResolveStatic : IResolveStatic
{
public string CreatedAt { get; set; }
public ResolveStatic() { CreatedAt = DateTime.Now.ToString(); }
}
public class ResolveRequest : IResolveRequest
{
public string CreatedAt { get; set; }
public ResolveRequest() { CreatedAt = DateTime.Now.ToString(); }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment