Ejemplo n.º 1
0
 public override bool IsAssignableFrom(PLanguageType otherType)
 {
     // Copying semantics: both the other key and value types must be subtypes of this key/value type.
     return(otherType.Canonicalize() is MapType other &&
            KeyType.IsAssignableFrom(other.KeyType) &&
            ValueType.IsAssignableFrom(other.ValueType));
 }
 public void Add(object key, object value)
 {
     if (!KeyType.IsAssignableFrom(key.GetType()))
     {
         key = TypeDescriptor.GetConverter(KeyType).ConvertFrom(key);
     }
     Dictionary.Add(key, value);
 }
Ejemplo n.º 3
0
 public override bool MatchNode(NodeViewModel node)
 {
     if (node.HasDictionary && node.NodeValue != null)
     {
         var dictionaryType = node.NodeValue.GetType();
         if (dictionaryType.IsGenericType)
         {
             var genericTypes = dictionaryType.GetGenericArguments();
             if (genericTypes.Length == 2)
             {
                 return((KeyType == null || KeyType.IsAssignableFrom(genericTypes[0])) && (ValueType == null || ValueType.IsAssignableFrom(genericTypes[1])));
             }
         }
     }
     return(false);
 }