Основываясь на комментариях, вы на самом деле имеете в виду «не разрешать статические классы». Так что ... не SE статический класс. Я бы предложил переместить эти статические свойства в экземпляр по умолчанию:
class Foo {
private static readonly Foo @default =
new Foo();
public static Foo Default { get { return @default; } }
public int A { get; set; }
public string B { get; set; }
}
И обрабатывать свойства объекта Foo.Default
как существующие статические.
Обратите внимание, что для XmlSerializer вам нужен общедоступный ctor, поэтому я не назвал его синглтоном, поскольку строго говоря это не будет.