TypeBinding Attribute
The TypeBinding attribute is assigned to a model type to establish a mapping between it and a type in the implementation (or adapter/harness).
Type bindings are used for translating rule-method parameters, which belong to model types, into action parameters, which belong to implementation types. When testing, a one-to-one mapping is established between instances returned by the implementation and model types instances appearing in assumptions derived from model exploration.
Type binding to a static class is not allowed.
Example
Here, the SimpleThread class in the model program is bound to the ComplexThread class in the implementation.
Model Program code snippet:
namespace SpecExplorer3
{
/// <summary>
/// A model class, bound to an sample class.
/// </summary>
[TypeBinding("SpecExplorer3.Sample.ComplexThread")]
class SimpleThread
{
…
Implementation program code snippet:
namespace SpecExplorer3.Sample
{
/// <summary>
/// The implementation allows a thread to perform more than one step.
/// Tests should still pass, because the model's behavior is a subset of the implementation's.
/// </summary>
public class ComplexThread
{
…
To create the solution containing this type binding, in Visual Studio select: New Project -> Visual C# -> Test -> Spec Explorer Model. When the Spec Explorer Model Wizard window appears, select Instance-Based Spec Explorer Model -> Next -> Finish. The code for the model program is in SimpleThread.cs, the code for the implementation is in ComplexThread.cs