Click or drag to resize


The Neon.Common class library is built for NETStandard 2.0. It's relatively small and includes miscellaneous types that are useful on their own and are also required by other Neon projects. This is suitable for including in all .NET Core and .NET Framework projects including Xamarin. Here's a link to the namespace documentation:


Caution note Caution

This class library has not been tested for Windows UWP applications so you may run into problems in this environment.



This namespace includes a handful of collection classes. Some of these were written before Microsoft added equivalent collections to the standard .NET libraries. We're keeping these for backwards compatability.


This namespace hosts the bulk of the common types. NeonHelper exposes a ton of handy utility methods ranging from JSON/YAML serialization helpers, compression methods, and platform detection to process execution helpers. This class might have been better organized as several classes but it just evolved this way. Other handy types include SemanticVersion, CommandLine, and ServiceContainer.


This namespace includes classes for reading and writing Comma Separated Value (CSV) files: CsvReader, CsvWriter, CsvTableReader, CsvTableWriter.


This namespace includes some type converters as well as some interfaces and classes used by classes created by ModelGen.


This namespace includes a simple logger suitable -out-of-the-box for typical containerized applications. The key types are LogManager and INeonLogger. These classes are referenced throughout Neon libraries and services for simplicity. It is possible to replace the underlying logging mechanism with custom code or another logger if required.


This namespace includes a few I/O related classes, including TempFile and TempFolder that provide a convienent way to manage temporary files and folder (especially for unit testing). LinuxPath provide a way to maniplate Linux style paths from Windows (e.g. when a Windows machine is performing operations to a remote Linux computer via SSH). LinuxPermissions abstracts Linux file permissions.

PreprocessReader is a lightweight text file prepreprocessor that supports inline statements like #define, #if, #switch as well as supporting simple macro subsititution.


Neon ModelGen combines the Neon.ModelGen class library with a command line tool to convert interface definitions into usable classes, adding required boilerplate to handle Couchbase persistance and queries as well as INotifyPropertyChanged supporting data binding in user interfaces. ModelGen can also generate REST clients for web services.

The Neon.Common library includes attribute classes are used to decorate your model interface definitions to specify verious options.


This namespace includes NetHelper which provides utility methods for things like validating DNS host names, comparing IP addresses, simple IP address arithmetic, munging the local hosts file, pinging hosts for reachability, identifying an connected network interface, along with a few more capabilities.

Other handy types are: JsonClient which wraps HttpClient with features suitable for calling a JSON based REST API. NetworkCidr allows you to reason about network subnets, Pinger an thread-safe alternative to the standard .NET Ping class, HttpException and NetworkPorts.


This namespace includes types used for specifying retry policies, including: ExponentialRetryPolicy, LinearRetryPolicy and TransientDetector.


This namespace provides a way to specify a collection of services available to production and test applications via a ServiceMap. Service maps are used to abstract the remote network endpoints consumed by a service or application to make it easy to do real end-to-end testing in the debugger or as unit tests as well as to run the same code in production with just a configuration change.


This namespace has several classes that extend traditional thread synchronization primitives to async/await code: AsyncAutoResetEvent, AsyncManualResetEvent, AsyncMutex, and AsyncReaderWriterLock.

SyncContext provides a very easy way to have async calls to your methods not be marshaled back to the calling thread on completion. This is an alternative to calling Task.ConfigureAwait(false) everywhere. We also provide AsyncPeriodicTask which is essentially a timer with built-in exception handling.


The namespace provides various time related utilities like: GatedTimer, GoTimeSpan, PolledTimer, RecurringTimer, SysTime, and TimeOfDay.


Low-level Windows integrations.


The Neon.Common library also extends a few types from standard .NET libraries as well as external JSON/YAML libraries:

JsonExtensions, AppDomainExtensions, EnumExtensions, ExceptionExtensions, IEnumerableExtensions, RandomExtensions, ReflectionExtensions, StringExtensions, TimeSpanExtensions, StringBuilderExtensions, HttpClientExtensions, and YamlDotNetExtensions.

See Also