Determine the model type
To determine the model type, use the Is
method or As
method of the IModel
object.
Determine the type
The Is
method of the IModel
object strictly determines whether the model matches the specified type. If it is a derived class, it will return false.
public void CheckType(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
//Strictly check if the type of model is the "Actor" class
var isActor = model.Is("Actor");
//If it is "Actor"
if (isActor)
{
c.App.Output.WriteLine("sample", $"Model: {model.Name} is an instance of the Actor class.");
}
else //If it is not "Actor" (this also applies to derived classes)
{
c.App.Output.WriteLine("sample", $"Model: {model.Name} is not an instance of the Actor class.");
}
}
You can use the IsIn
method to check multiple types.
public void CheckType(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
//Determines whether the type of model is the "Actor" class or the "UseCase" class.
var isActorOrUseCase = model.IsIn("Actor,UseCase");
//...
}
You can also verify by passing an array of IEnumerable<string>
.
public void CheckType(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
//Determine whether the model type is the "Actor" class or the "UseCase" class.
var isActorOrUseCase = model.IsIn(new List<string>() { "Actor", "UseCase" });
//...
}
Determining the type including inheritance relationships
To determine whether the model is a specific class or a derived class, use the As
method of the IModel
object.
public void TypeAs(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
//Determine if the model is "Actor" or a derived class.
var asActor = model.As("Actor");
if (asActor)
{
c.App.Output.WriteLine("sample", $"Model: {model.Name} is an instance of the Actor class or a derived class.");
}
else
{
c.App.Output.WriteLine("sample", $"Model: {model.Name} is not an instance of the Actor class or a derived class.");
}
}