Conclusion
The growing emphasis on cost reduction in IT means that rewriting code from scratch may be a luxury. Also, you may want to gain access to the advantages of new technologies and programming languages, such as .NET and C#, without throwing away your legacy code. It’s possible that such legacy code contains important, product-differentiating intellectual property.
Taking a command pattern implementation in C++ and porting it to C# is surprisingly straightforward. You just need to follow a specific set of rules, and soon you can enjoy the benefits of direct memory access from within the C# managed code domain. Such an approach could allow for a phased migration from C++ to C#; the legacy C++ code could be ported minimally and changed into C# over a longer period. A mixed-language implementation could be used as an initial release.
The command pattern is powerful and very simple. If you have similar infrastructure written in C++, with a little effort you can move this infrastructure successfully into the .NET/C# domain.