Instead of trying to swap the instance like that, you should be able to do it declaratively.
Make sure you 'Register' your custom outline view, e.g.:
[Register("MySourceList")]
private class MySourceList : NSOutlineView
{
// Need this constructor for items created in .xib
public MySourceList(IntPtr handle) : base(handle)
{ }
Then, in the Xcode designer, select your outline view and specify the name you registered as the Custom Class for that object:
That way, when your view is created from the nib, the runtime will create the proper instance of your outline view in the first place.