Vici Core is a multi-purpose .NET library which is used as the core component for Vici MVC and Vici CoolStorage. Its core functionilty is a late-bound expression parser and template rendering engine. It also includes an easy to use tokenizer that can be used for parsing all kinds of file formats (a full-featured JSON parser is included).
The library includes the following subcomponents/frameworks:
All features are available for .NET (Windows), Mono and MonoTouch (iPhone).
Check out this blog post for an overview of the framework: http://blog.activa.be/index.php/2012/05/vici-core/
Allow you to create a typed class that maps to a pluggable configuration provider. Supports versioning (auto reload of changed configuration). Includes providers for app.config and custom XML files.
Convert any data type to any other data type using "Vici Conversion Heuristics". No more type conversion exceptions!
Add easy logging to your application using pluggable logging providers. File and console loggers are built-in, but you can easily add your own.
Easily implement the notifier/observer pattern in your application. Similar to Apple's NSNotificationCenter.
Thread-safe and fully typed caching class which can be used in any application. It supports sliding and absolute expiration times, auto-loading of expired objects.
Add scheduling support to your application. Supports cyclic, daily and monthly schedules.
The tokenizer can be used to tokenize any input string using an extensible algorithm. A full-featured JSON tokenizer and parser is included.
If you want to parse C# expressions at runtime, you can use this component. It will compile a given expression to a syntax tree and can then be evaluated using a user-specified context. Expressions are evaluated as a late-bound expression. This means that there is no type checking when compiling the expression, but when evaluating.
The Vici Core template rendering component allows you to incorporate template parsing and rendering in your application. The template syntax is fully configurable. A few standard template syntax configurations are included, including Velocity syntax.
Serialize any object to JSON notation or parse any JSON string to either a dictionary object or a typed object.