add csharp implement