I found that if I make the default constructor of my class that my webmethod returns anything other than public it will not serialize the __type:ClassName portion.
You may want to declare your default constructor protected internal ClassName() { }