Skip to content

Instantly share code, notes, and snippets.

Lee Campbell LeeCampbell

Block or report user

Report or block LeeCampbell

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
LeeCampbell / StubRegionManager
Created Sep 7, 2011
Prebuilt Stub RegionManager to enable friction-free testing of the IRegionManager Prism interface
View StubRegionManager
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.ServiceLocation;
using Moq;
using System.Collections.ObjectModel;
namespace ArtemisWest.Prism.Testing
LeeCampbell / INotifyPropertyChangedExtensions.cs
Created Feb 9, 2012
Extension methods to help with INotifyPropertyChanged interface (and ObservableCollection<T>)
View INotifyPropertyChangedExtensions.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
//TODO: Allow the ability to provide multiple properties to WhenPropertyChanges
LeeCampbell / TestsToEnglish.linq
Created Feb 13, 2012
LinqPad Query to query the Given/When/Then list of tests
View TestsToEnglish.linq
void Main()
//I want to have it format like:
// Given a new strategy
// When the name is modified
// Then raise property changed
// When trade added
// The DeltaCashSum equals Trade DeltaCash
// When invalid trade added
LeeCampbell / ObservableAPMExtensions.cs
Created Feb 13, 2012
Extension methods to help with converting APM pattern to Observable.
View ObservableAPMExtensions.cs
public static class ObservableAPMExtensions
public static IObservable<byte> ToObservable(this FileStream source)
return source.ToObservable(4096, Scheduler.CurrentThread);
public static IObservable<byte> ToObservable(this FileStream source, int buffersize, IScheduler scheduler)
LeeCampbell / Logger.cs
Created Oct 2, 2012
Logging implementation with Rx features
View Logger.cs
using System;
using System.Diagnostics;
using System.Reactive.Disposables;
using System.Reactive.Linq;
using System.Reactive.Concurrency;
using Microsoft.Practices.Prism.Logging;
using log4net;
using log4net.Core;
//From ResSharper --> Options --> Code Inspection --> Code Annotations -->Copy default implementation to clipboard
LeeCampbell / MyPermissionRepo.cs
Created Oct 5, 2012
Asynchronous cache of values
View MyPermissionRepo.cs
void Main()
var repo = new MyPermissionRepo();
//These will all get batched up and sent together
LeeCampbell / csharp.xslt
Created Oct 9, 2012
Protobuf-Net xslt file to produce Nullable Properties
View csharp.xslt
In conjunction with the patch for issue 72
This file can make the current implementation of the Protobuf-net tools useful. Without these however protobuf-net is full of surprises like:
* Requiring you to specify if it should detect missing values (why is this not always on?)
* Not being able to identify between not specified (null in every other computer system) and the default value
* Not being able to compile if an Enum is optional but does not specify a default value?!
* Happily serializing invalid messages i.e. where required values are missing
LeeCampbell / ScrollViewerCorrector.cs
Created Oct 26, 2012
Corrects the ScrollViewer behavior that does not allow parent to scroll once child has exhausted scrolling.
View ScrollViewerCorrector.cs
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace MyLib
LeeCampbell / MyLib.Messaging.cs
Created Dec 12, 2012
Thoughts on a simple Messaging API
View MyLib.Messaging.cs
using System;
namespace MyLib.Messaging
public interface IConsumer<out T>
///<summary>Allows non-destructive read access to the next message on the queue</summary>
T Peek();
///<summary>Transactional consumer. Requires a transaction scope to be accessed.</summary>
LeeCampbell / KdbClient.cs
Created Jun 4, 2013
KDB Client rewritten from sample Kx code to use more useful names.
View KdbClient.cs
//2012.06.07 fixed scoping of GUID
//2012.05.29 for use with kdb+v3.0, changed handshake and added Guid. boolean v6->vt tracks type capability.
//2012.01.26 refactored clamp into clampDT, for Date.DateTime()
//2012.01.25 rz() clamp datetime to valid range
//2010.11.17 Block sending new timetypes to version of kdb+ prior to v2.6 (use prior release of KdbClient.cs for older kdb+ versions)
// Max buffer size (default 64kB) used for reading is now a parameter to the KdbClient constructor
// Date, Month, Minute, Second, KTimeSpan are now serializable, implement IComparable
// and have default constructors for xml serialization.
// Added GetNullRepresentation(Type t)
//2010.08.05 Added KException for exceptions due to server error, authentication fail and func decode
You can’t perform that action at this time.