I'm so tired of writing null checks ...
I guess I kinda wonder if I could avoid the null checks in C# somehow ... I figured using a design by contract approach might be used to reduce the null checks somewhat.
It's definitely NOT awesome. This stupid behaviour causes bugs all the time as you think you're doing an action but it's actually a no-op because something else failed and you get a nil. An NPE is awesome - it crashes immediately and you know exactly what is wrong. A silent no-op is the worst thing to debug.
Without seeing your code it is hard to say, but using an object extension might work?
On many occasions I've used object extensions to hide checking code deep inside the extension.
C# really got that feature right.