Implement Feature Detection Model


In order to make interaction with smart cards a simple process, a model for detecting the features a smart card supports must be created.  This design must support extended the set of features that can be detected through plug-ins allowing for support of new cards types with-out the need to compile the code into the framework assembly.  An example of what the code usage from an application developers endpoint might be.
ICard card = cardFromManager;
var feature = card.Features.TryGet<ISimAddressBook>();
var contacts = feature.GetContacts();
foreach (var contact in contacts)
   ... // do something