From 8686848d3e9d1e8daab70cd78330ffbc84e046ef Mon Sep 17 00:00:00 2001 From: mgroves Date: Sun, 19 Dec 2010 15:34:20 -0500 Subject: [PATCH] working with PostSharp/IoC stuff --- .../AndroidSqlitePortfolioRepository.cs | 5 -- MonoStockPortfolio/IoCAttribute.cs | 55 ++++++++++++++++++ MonoStockPortfolio/MainActivity.cs | 9 +-- MonoStockPortfolio/MonoStockPortfolio.csproj | 8 +++ MonoStockPortfolio/PostSharp.Custom.targets | 6 ++ libs/PostSharp.SL.dll | Bin 0 -> 73728 bytes 6 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 MonoStockPortfolio/IoCAttribute.cs create mode 100644 MonoStockPortfolio/PostSharp.Custom.targets create mode 100644 libs/PostSharp.SL.dll diff --git a/MonoStockPortfolio.Core/PortfolioRepositories/AndroidSqlitePortfolioRepository.cs b/MonoStockPortfolio.Core/PortfolioRepositories/AndroidSqlitePortfolioRepository.cs index b694beb..af2be61 100644 --- a/MonoStockPortfolio.Core/PortfolioRepositories/AndroidSqlitePortfolioRepository.cs +++ b/MonoStockPortfolio.Core/PortfolioRepositories/AndroidSqlitePortfolioRepository.cs @@ -16,11 +16,6 @@ namespace MonoStockPortfolio.Core.PortfolioRepositories private const int DATABASE_VERSION = 1; private const string POSITION_TABLE_NAME = "Positions"; - public AndroidSqlitePortfolioRepository(SQLiteDatabase db) - { - _db = db; - } - public AndroidSqlitePortfolioRepository(Context context) { _dbHelper = new OpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION); diff --git a/MonoStockPortfolio/IoCAttribute.cs b/MonoStockPortfolio/IoCAttribute.cs new file mode 100644 index 0000000..59c7f0e --- /dev/null +++ b/MonoStockPortfolio/IoCAttribute.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using Android.Content; +using MonoStockPortfolio.Core.PortfolioRepositories; +using MonoStockPortfolio.Core.Services; +using PostSharp.Aspects; + +namespace MonoStockPortfolio +{ + public class IoCAttribute : LocationInterceptionAspect + { + private static Context _context; + + public override void OnGetValue(LocationInterceptionArgs args) + { + if(_context != null) _context = (Context)args.Instance; + + var locationType = args.Location.LocationType; + var instantiation = GetInstance(locationType); + if(instantiation != null) + { + args.SetNewValue(instantiation); + } + args.ProceedGetValue(); + } + + private static object GetInstance(Type locationType) + { + if (DependencyMap.ContainsKey(locationType)) + { + return DependencyMap[locationType](); + } + return null; + } + + private static IDictionary> DependencyMap + { + get { return _dependencyMap ?? (_dependencyMap = DefaultDependencies()); } + } + + private static IDictionary> _dependencyMap; + private static IDictionary> DefaultDependencies() + { + var map = new Dictionary>(); + map.Add(typeof(IPortfolioService), () => new PortfolioService(_context)); + map.Add(typeof(IPortfolioRepository), () => new AndroidSqlitePortfolioRepository(_context)); + return map; + } + + public void LoadDependencies(IDictionary> dependencies) + { + _dependencyMap = dependencies; + } + } +} \ No newline at end of file diff --git a/MonoStockPortfolio/MainActivity.cs b/MonoStockPortfolio/MainActivity.cs index 8a607ec..6df4cd8 100644 --- a/MonoStockPortfolio/MainActivity.cs +++ b/MonoStockPortfolio/MainActivity.cs @@ -16,18 +16,16 @@ namespace MonoStockPortfolio { public static string ClassName { get { return "monostockportfolio.MainActivity"; } } - private IPortfolioService _svc; + [IoC] private IPortfolioService _svc; + [IoC] private IPortfolioRepository _repo; + private IList _portfolios; private string[] _longClickOptions; - private IPortfolioRepository _repo; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); - _svc = new PortfolioService(this); - _repo = new AndroidSqlitePortfolioRepository(this); - SetContentView(Resource.layout.main); RefreshList(); @@ -67,7 +65,6 @@ namespace MonoStockPortfolio private void tr_LongClick_Options(object sender, DialogClickEventArgs e, Portfolio selectedPortfolio) { - //Toast.MakeText(this, "Option: " + _longClickOptions[e.Which], ToastLength.Long).Show(); if(_longClickOptions[e.Which] == "Edit") { // Edit diff --git a/MonoStockPortfolio/MonoStockPortfolio.csproj b/MonoStockPortfolio/MonoStockPortfolio.csproj index 8a4e021..b3f3adc 100644 --- a/MonoStockPortfolio/MonoStockPortfolio.csproj +++ b/MonoStockPortfolio/MonoStockPortfolio.csproj @@ -38,6 +38,10 @@ + + False + ..\libs\PostSharp.SL.dll + @@ -45,6 +49,7 @@ + @@ -54,6 +59,9 @@ + + Designer + diff --git a/MonoStockPortfolio/PostSharp.Custom.targets b/MonoStockPortfolio/PostSharp.Custom.targets new file mode 100644 index 0000000..38368c7 --- /dev/null +++ b/MonoStockPortfolio/PostSharp.Custom.targets @@ -0,0 +1,6 @@ + + + + Silverlight20 + + \ No newline at end of file diff --git a/libs/PostSharp.SL.dll b/libs/PostSharp.SL.dll new file mode 100644 index 0000000000000000000000000000000000000000..5fda9ab912de3177605de0d82c59719ac68cf469 GIT binary patch literal 73728 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 literal 0 HcmV?d00001