How should we contact you? Let us know!

Catel 3.5

Note that we recommend that you install Catel via NuGet.

You can also download the full source code here.


Release notes for Catel 3.5

(+) Added
(*) Changed
(-) Removed
(x) Error / bug (fix)

For more information about issues or new feature requests, please visit:

Project website:
Issue tracker:

Version 3.5

Release date:

(x) Removed automatic property change notification of sub property models in the ModelBase. This logic is now implemented in the
ChangeNotificationWrapper class which is fully based on weak references and weak event listeners. This has been done to fix
a memory leak issue in the model base
(*) Moved all type resolving from TypeHelper to TypeCache
(-) Removed all .NET 3.5 projects, .NET 4.0 is now the minimal required version

(+) Added Argument.InheritsFrom to check if an instance inherits from a type.
(+) Added options to configure a service locator from configuration file.
(+) Added ServiceLocator.CanResolveNonAbstractTypesWithoutRegistration to setup service locator behavior for non-abstract
types resolution without registration
(+) ServiceLocator resolves non-abstract types without registration.
(+) Added IsValid method in Argument class
(+) Added ChangeNotificationWrapper to get no-memory-leak safe change notifications of objects and collections
(+) Added ConsoleLogListener to write to the console for console applications
(+) Added the SendMessageAsync method in IMessageMediator
(+) Added INeedCustomInitialization to allow custom initialization of types created by the TypeFactory
(+) Added Catel.Mvc libraries with features especially built for ASP.NET MVC
(+) Added ServiceLocator.RemoveInstance and a couple of overloads of ServiceLocator.RemoveAllInstances methods to remove instance
from the service locator
(+) Added ServiceLocator.ResolveTypes method to resolve all instances for an interface type
(+) Added auto register types via attributes feature to the service locator
(+) Added expression overloads to IsMinimal, IsMaximum, ImplementsInterface, ImplementsOneOfTheInterfaces, IsOfType,
IsOfOneOfTheTypes, IsNotOfType, IsNotOfOneOfTheTypes, IsNotMatch and IsMatch methods of Argument class
(+) Added expression overloads to IsNotNull, IsNotNullOrEmpty, IsNotNullOrEmpty, IsNotNullOrEmpty, IsNotNullOrWhitespace,
IsNotNullOrEmptyArray and IsNotOutOfRange methods of Argument class
(+) Added support for Entity Framework 5 with repositories, unit of work and a DbContextManager
(+) Added Composite expiration policy to combine serveral expiration policies into a single one
(+) Added Custom expiration policy
(+) Added some exception extensions
(+) Added a generic overload to RegisterProperty method of the ModelBase class as option to avoid the usage of “magic strings”
as property name. Now the property name can be computed from an existing property.
The usage of this method improves the refactoring process
(+) Added time related cache expiration policies including Absolute, Duration and Sliding
(+) Added InfoBarMessageControl.DefaultTextPropertyValue to customize the Text property for a complete application
(+) Added ValidationContextExtensions to merge ValidationContext objects
(+) Added specification pattern implementation to Catel.Extensions.Data
(+) Added TaskHelper with task helper methods for all frameworks (also for frameworks without Task class)
(+) Added tag parameter to all CommandHelper methods
(+) Added PropertyHelper which can resolve property names based on a linq expression
(+) Added PropertyChangedEventArgs extensiosn which can check for specific property changes based on expressions
(+) Added ServiceLocator.GetRegistrationInfo to retrieve registration info about a registered type
(+) Added System.Threading.Timer to WinRT because the DispatcherThread can only be used on the UI thread (and causes unit tests
of view models to fail)
(*) ModelBase now supports calculated properties as registered properties which can be used during validation
(*) Updated RedirectDeserializationBinder LoadType method to call GetType from TypeCache instead from Type
(*) The ModelBase.RegisterProperty now contains an override for the SetParent
(*) Attribute validation on non-public properties in Silverlight is now disabled to prevent unnecessary exceptions
(*) Logging now supports extra data which can be used in custom listeners and logging stategies
(*) Moved some logic from Log to ILogExtensions so users don’t have to reimplement the same logic in several loggers
(*) Performance improvement when constructing view models without parameters
(*) AssemblyHelper.RegisterAssembliesFromXap now automatically registers type in the TypeCache
(*) AssemblyHelper.RegisterAssembliesFromXap now allows registering types in a background thread
(*) UniqueIdentifierHelper is now thread-safe
(*) Updated Catel.Extensions.CSLA dependency to 4.5.10
(*) WeakEventListener now also supports explicitly implemented events
(*) Catel.Extensions.FluentValidation no longer requires a reference to Catel.MVVM. A reference to Catel.Core is sufficient so
it can also be used on server side validation
(x) Fixed issue with xml serialization where an object with just collections wasn’t deserialized correctly
(x) Fixed several issues with the Windows Phone navigation service and logic
(x) Fixed LayoutCycleException in the PleaseWaitService for Silverlight when used in combination with DevExpress controls
(x) Fixed issue in WeakEventListener for WinRT
(x) Fixed possible multithreading issue in the ServiceLocator
(x) Fixed memory leak in view model metadata
(x) Fixed issue where initial errors were not always shown directly by the InfoBarMessageControl
(x) Fixed memory leak in the PopupHelper for WPF

Back to Top
Fork me on GitHub