static bool ImplementsRedirectedInterface(MemberReference member)
{
var declaring_type = member.DeclaringType;
TypeReference type;
switch (declaring_type.MetadataToken.TokenType) {
case TokenType.TypeRef:
type = declaring_type;
break;
case TokenType.TypeSpec:
if (!declaring_type.IsGenericInstance)
return false;
type = ((TypeSpecification) declaring_type).ElementType;
if (type.MetadataType != MetadataType.Class || type.MetadataToken.TokenType != TokenType.TypeRef)
return false;
break;
default:
return false;
}
var projection = RemoveProjection (type);
var found = false;
ProjectionInfo info;
if (Projections.TryGetValue (type.Name, out info) && type.Namespace == info.WinRTNamespace) {
found = true;
}
ApplyProjection (type, projection);
return found;
}