public override IEnumDebugProperty EnumChildren(EnumerationKind kind, int radix, int timeout, bool allowFuncEval) { if (this.value == null || this.value.IsNullReference()) { return(null); } if (this.structuralType.StructuralType == StructTypes.Tuple) { IDebugStructuralType classType = (IDebugStructuralType)this.value.RuntimeType(); IEnumSymbol enumSymbol = classType.GetMembers(null, true, SymbolKind.Field | SymbolKind.Property, SymbolModifiers.All); return(new EnumDebugPropertySymbols(enumSymbol, this, this.value, this.evaluator)); } else if (this.structuralType.StructuralType == StructTypes.Union) { // TODO: Handle Union Types, Properly IDebugStructuralType structType = (IDebugStructuralType)this.value.RuntimeType(); IEnumSymbol enumSymbol = structType.GetMembers(null, true, SymbolKind.Field | SymbolKind.Property, SymbolModifiers.All); return(new EnumDebugPropertySymbols(enumSymbol, this, this.value, this.evaluator)); } else if (this.structuralType.StructuralType == StructTypes.Intersection) { // TODO: Handle Intersection Types, Properly return(null); } return(null); }
public StructuralProperty(string name, IDebugType staticType, IDebugValue value, IDebugProperty parent, CommonExpressionEvaluator evaluator) : base(name, staticType, value, parent, evaluator) { if (this.value != null) { this.structuralType = this.value.RuntimeType() as IDebugStructuralType; } else { this.structuralType = staticType as IDebugStructuralType; } }
public StructuralProperty(string name, IDebugType staticType, IDebugValue value, IDebugProperty parent, CommonExpressionEvaluator evaluator) : base(name, staticType, value, parent, evaluator){ if (this.value != null) this.structuralType = this.value.RuntimeType() as IDebugStructuralType; else this.structuralType = staticType as IDebugStructuralType; }