Many "anti-patterns" are common to statically reliant OOPLs, though of
course every OOPL has specific ones. I would look to see if ones for
Java, C++, Eiffel, Ada, etc. might apply to C#.
First and most important C# antipattern:
Don't use C#.
I find that C# offers the closer to the power of C++ than Java, without
some of the "hidden gotcha's" of C++. Or the need to learn many of the
complex esoterics given with C++.
Plus C# being more "modern" has built-in networking support, like Java,
support for embedded components, especially of course COM components.
C# has direct and extremely powerful support for PACAKAGING code in way
that to an appropriate extent decouples the packaging of code from the
logical program functionality (wrt use cases) of the code. C# does so
via its "ASSEMBLIES" concepts and tools. Finally C# supports web
programming and web services directly as a feature of the language, more
like Java and unlike C++.
[The ludicrosity of supporting birds of a feather shows itself in blind
support for those who simply trashed without useful, and detailed
analytical criticism.]
Elliott