Type does not have null as a proper value
===

For the sample program:

    type public MyClass(reasonForLiving:string) =
        member x.ReasonForLiving with get() = reasonForLiving
    
    let classFactory () = MyClass("up to you")
    let live () =
        let instance = classFactory()
        if instance = null then raise(System.Exception("null is not living... that's why OO languages die from bugs"))
        instance

I get the error "The type 'MyClass' does not have null as a proper value" when I go to use this class as a return value of implicitly typed functions and compare it to *null* (b/c of compatibility requirements with C# dependency injection I cannot rely on F# option types).
   
I can easily fix this by changing the null check to:

    if instance :> obj = null then

However, I know ("feel") this is completely "wrong". Especially when I consider how MyClass is a reference type that shouldn't need to be boxed (speaking from a C# background).

I've read about "F# Value Restriction" and how it impacts type inference, but I can't seem to gleam how it applies to this scenario.

**Q: Is there another way to do this?**

Aside #1: I found a simpler method of getting the error...

    type public MyClass(reasonForLiving:string) =
        member x.ReasonForLiving with get() = reasonForLiving
    let nullMyClass : MyClass = null

Aside #2: I did try System.Nullable<MyClass> without thinking... MyClass is a reference type and not a value type (struct) which Nullable<_> requires. So, just reassures me that I REALLY am dealing with a reference type and leaves me wondering why an object cast suddenly makes this work.
