Can you create a public object field called BarReference in type Foo?
Someone outside of Foo should set the proper instance of Bar to this property.
As long as there is a reference to the bar instance it won't be GCed AND using object Foo doesn't know anything about Bar type.