Retlang no longer uses IsAssignableFrom due to the very performance implications you mention.
The new implementation uses generics.
public bool CanCastTo<T>()
{
return _obj is T;
}
This change made a noticeable performance improvement. With this change and a few others, I've measured messaging rates over 4 million messages per second on a 3.0 ghz quad core running .NET 2.0.
Thanks for the feedback.
Mike