Your comments

I added Error(FormattableString) and removed Error(string) and Error(string, object[])

.Error($"{test}") still decodes itself and follows string to Error<T>

As a huge proponent of interpolated strings (I loathe arg based Format stuff) I'd say any of those sound reasonable.

#3 sounds the best to me. Maybe I should get off my duff and look into that for ya :P

#2 & #1 ... I dunno, they both have their strengths/weaknesses