Since you've specified that you're using C# a viable solution to your situation is to leverage the [Roslyn Code Analyzers][1]Roslyn Code Analyzers. This will allow you to catch violations immediately and even allow you to [suggest code fixes][2]suggest code fixes.
One way to implement it would be to decorate the temporally coupled methods with an attribute that specifies the order that the methods need to be called1. When the analyzer finds these attributes in a class it validates that the methods are called in order. This would make your class look something like the following:
public abstract class Foo
{
[TemporallyCoupled(1)]
public abstract void Init();
[TemporallyCoupled(2)]
public abstract void DoBar();
[TemporallyCoupled(3)]
public abstract void Close();
}
1: I've never written a Roslyn Code Analyzer so this might not be the best implementation. The idea to use Roslyn Code Analyzer to verify your API is being used correctly is 100% sound though. [1]: https://msdn.microsoft.com/en-us/magazine/dn879356.aspx [2]: https://msdn.microsoft.com/en-us/magazine/dn904670.aspx