Skip to content

Instantly share code, notes, and snippets.

@rookiejava
Created March 9, 2018 00:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rookiejava/17f8d8f92032e3c06187ecd92a9fe486 to your computer and use it in GitHub Desktop.
Save rookiejava/17f8d8f92032e3c06187ecd92a9fe486 to your computer and use it in GitHub Desktop.
IoC Container example for GestureRecognizer on Tizen
static void Main(string[] args)
{
// Using AutoFac as a container
var builder = new ContainerBuilder();
// Create the Logger instance
var loggerInstance = Xamarin.Forms.Platform.Tizen.Log.Logger;
// Tell AutoFac about LoggedTapGestureRecognizer and which constructor to use
builder.RegisterType<LoggedTapGestureRecognizer>().UsingConstructor(typeof(IGestureRecognizer), typeof(ILogger));
var container = builder.Build();
// Tell the Registrar to give AutoFac a chance to resolve instances before
// constructing them using Activator.CreateInstance
DependencyResolver.ResolveUsing((type, arg) => container.IsRegistered(type) ? container.Resolve(type, new TypedParameter(typeof(IGestureRecognizer), arg[0]), new TypedParameter(typeof(ILogger), loggerInstance)) : null);
// Create the app
var app = new App();
// Init Forms
global::Xamarin.Forms.Platform.Tizen.Forms.Init(app);
app.Run(args);
}
using ElmSharp;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Tizen;
using ContainerTests.Tizen;
[assembly: ExportHandler(typeof(TapGestureRecognizer), typeof(LoggedTapGestureRecognizer))]
namespace ContainerTests.Tizen
{
public class LoggedTapGestureRecognizer : GestureHandler
{
private readonly ILogger _logger;
public LoggedTapGestureRecognizer(IGestureRecognizer recognizer, ILogger logger) : base(recognizer)
{
_logger = logger;
}
public override GestureLayer.GestureType Type
{
get
{
var recognizer = Recognizer as TapGestureRecognizer;
if (recognizer != null)
{
int numberOfTaps = recognizer.NumberOfTapsRequired;
if (numberOfTaps > 2)
return GestureLayer.GestureType.TripleTap;
else if (numberOfTaps > 1)
return GestureLayer.GestureType.DoubleTap;
}
return GestureLayer.GestureType.Tap;
}
}
protected override void OnStarted(View sender, object data)
{
_logger.Debug("Test", "OnStarted occured", "", "", 0);
}
protected override void OnMoved(View sender, object data)
{
_logger.Debug("Test", "OnMoved occured", "", "", 0);
}
protected override void OnCompleted(View sender, object data)
{
_logger.Debug("Test", "OnCompleted occured", "", "", 0);
(Recognizer as TapGestureRecognizer)?.SendTapped(sender);
}
protected override void OnCanceled(View sender, object data)
{
_logger.Debug("Test", "OnCanceled occured", "", "", 0);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment