Using MEF to Expose Interfaces in Your Silverlight MVVM Apps: Listing 2
Creating the ViewModelExportAttribute
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class ViewModelExportAttribute :
ExportAttribute, IViewModelMetadata {
..public Type ViewModelContract { get; set; }
public string NavigationPath { get; set; }
public string Key { get; set; }
public ViewModelExportAttribute(Type viewModelContract,
string navigationPath) : base(typeof(IViewModel)) {
this.NavigationPath = navigationPath;
this.ViewModelContract = viewModelContract;
if (NavigationPath != null &&
NavigationPath.Contains("/")) {
// Split the path to get the arguments.
var split = NavigationPath.Split(new char[] { '/' },
StringSplitOptions.RemoveEmptyEntries);
// Get the key.
Key = split[0];
}
else {
// No arguments, use the whole key.
Key = NavigationPath;
}
}
}