Class TypeSlimVisitor<TType, TSimpleType, TArrayType, TStructuralType, TGenericDefinitionType, TGenericType, TGenericParameterType>
Visitor over the structure of a lightweight representation of a type.
Inheritance
Namespace: System.Reflection
Assembly: Nuqleon.Linq.Expressions.Bonsai.dll
Syntax
public abstract class TypeSlimVisitor<TType, TSimpleType, TArrayType, TStructuralType, TGenericDefinitionType, TGenericType, TGenericParameterType> : Object where TSimpleType : TType where TArrayType : TType where TStructuralType : TType where TGenericDefinitionType : TType where TGenericType : TType where TGenericParameterType : TType
  Type Parameters
| Name | Description | 
|---|---|
| TType | Type representing a type.  | 
      
| TSimpleType | Type representing a simple type.  | 
      
| TArrayType | Type representing an array type.  | 
      
| TStructuralType | Type representing a structural type.  | 
      
| TGenericDefinitionType | Type representing an open generic type definition.  | 
      
| TGenericType | Type representing a closed generic type.  | 
      
| TGenericParameterType | Type representing a generic parameter type.  | 
      
Constructors
TypeSlimVisitor()
Declaration
protected TypeSlimVisitor()
  Methods
MakeArrayType(ArrayTypeSlim, TType, Nullable<Int32>)
Constructs an array type with the specified element type and rank.
Declaration
protected abstract TArrayType MakeArrayType(ArrayTypeSlim type, TType elementType, Nullable<int> rank)
  Parameters
| Type | Name | Description | 
|---|---|---|
| ArrayTypeSlim | type | Original type.  | 
      
| TType | elementType | Element type of the array.  | 
      
| System.Nullable<System.Int32> | rank | Rank of the array, i.e. the number of dimensions. If the rank is null, the array is single-dimensional.  | 
      
Returns
| Type | Description | 
|---|---|
| TArrayType | Representation of an array type with the given element type and rank.  | 
      
MakeGeneric(GenericTypeSlim, TGenericDefinitionType, ReadOnlyCollection<TType>)
Constructs a closed generic type with the specified type definition and type arguments.
Declaration
protected abstract TGenericType MakeGeneric(GenericTypeSlim type, TGenericDefinitionType typeDefinition, ReadOnlyCollection<TType> arguments)
  Parameters
| Type | Name | Description | 
|---|---|---|
| GenericTypeSlim | type | Original type.  | 
      
| TGenericDefinitionType | typeDefinition | Generic type definition.  | 
      
| System.Collections.ObjectModel.ReadOnlyCollection<TType> | arguments | Generic type arguments.  | 
      
Returns
| Type | Description | 
|---|---|
| TGenericType | Representation of a closed generic type with the given type definition and type parameters.  | 
      
MakeGenericDefinition(GenericDefinitionTypeSlim)
Constructs an open generic type definition with the specified parameter types.
Declaration
protected abstract TGenericDefinitionType MakeGenericDefinition(GenericDefinitionTypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| GenericDefinitionTypeSlim | type | Original type.  | 
      
Returns
| Type | Description | 
|---|---|
| TGenericDefinitionType | Representation of an open generic type definition with the given parameter types.  | 
      
MakeStructuralType(StructuralTypeSlim, IEnumerable<KeyValuePair<PropertyInfoSlim, TType>>, IEnumerable<KeyValuePair<PropertyInfoSlim, ReadOnlyCollection<TType>>>)
Constructs a structural type with the specified member types.
Declaration
protected abstract TStructuralType MakeStructuralType(StructuralTypeSlim type, IEnumerable<KeyValuePair<PropertyInfoSlim, TType>> propertyTypes, IEnumerable<KeyValuePair<PropertyInfoSlim, ReadOnlyCollection<TType>>> propertyIndexParameters)
  Parameters
| Type | Name | Description | 
|---|---|---|
| StructuralTypeSlim | type | Original type.  | 
      
| System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<PropertyInfoSlim, TType>> | propertyTypes | Mapping from original properties to new property types.  | 
      
| System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<PropertyInfoSlim, System.Collections.ObjectModel.ReadOnlyCollection<TType>>> | propertyIndexParameters | Mapping from original index parameters to new property types.  | 
      
Returns
| Type | Description | 
|---|---|
| TStructuralType | Representation of a structural type with the given members.  | 
      
Visit(ReadOnlyCollection<TypeSlim>)
Visits a collection of types.
Declaration
public ReadOnlyCollection<TType> Visit(ReadOnlyCollection<TypeSlim> types)
  Parameters
| Type | Name | Description | 
|---|---|---|
| System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | types | Types to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| System.Collections.ObjectModel.ReadOnlyCollection<TType> | Result of visiting the types.  | 
      
Visit(TypeSlim)
Visits the specified type.
Declaration
public virtual TType Visit(TypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| TypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TType | Result of the visit.  | 
      
VisitAndConvert<TResult>(ReadOnlyCollection<TypeSlim>)
Visits a collection of types.
Declaration
public ReadOnlyCollection<TResult> VisitAndConvert<TResult>(ReadOnlyCollection<TypeSlim> types)
    where TResult : TType
  Parameters
| Type | Name | Description | 
|---|---|---|
| System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | types | Types to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| System.Collections.ObjectModel.ReadOnlyCollection<TResult> | Result of visiting the types.  | 
      
Type Parameters
| Name | Description | 
|---|---|
| TResult | 
VisitAndConvert<TResult>(TypeSlim)
Visits and converts a type.
Declaration
public TResult VisitAndConvert<TResult>(TypeSlim type)
    where TResult : TType
  Parameters
| Type | Name | Description | 
|---|---|---|
| TypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TResult | Result of visiting and converting the type.  | 
      
Type Parameters
| Name | Description | 
|---|---|
| TResult | Type representing the kind of type to convert to.  | 
      
VisitArray(ArrayTypeSlim)
Visits an array type.
Declaration
protected virtual TArrayType VisitArray(ArrayTypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| ArrayTypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TArrayType | Result of the visit.  | 
      
VisitGeneric(GenericTypeSlim)
Visits a close generic type.
Declaration
protected virtual TGenericType VisitGeneric(GenericTypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| GenericTypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TGenericType | Result of the visit.  | 
      
VisitGenericDefinition(GenericDefinitionTypeSlim)
Visits an open generic type definition.
Declaration
protected virtual TGenericDefinitionType VisitGenericDefinition(GenericDefinitionTypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| GenericDefinitionTypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TGenericDefinitionType | Result of the visit.  | 
      
VisitGenericParameter(GenericParameterTypeSlim)
Visits a generic parameter type.
Declaration
protected abstract TGenericParameterType VisitGenericParameter(GenericParameterTypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| GenericParameterTypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TGenericParameterType | Result of the visit.  | 
      
VisitGenericTypeArguments(GenericTypeSlim)
Visits the generic type arguments of a generic type.
Declaration
public ReadOnlyCollection<TType> VisitGenericTypeArguments(GenericTypeSlim genericType)
  Parameters
| Type | Name | Description | 
|---|---|---|
| GenericTypeSlim | genericType | The generic type whose type arguments to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| System.Collections.ObjectModel.ReadOnlyCollection<TType> | Result of visiting the generic type arguments.  | 
      
VisitSimple(SimpleTypeSlim)
Visits a simple type.
Declaration
protected abstract TSimpleType VisitSimple(SimpleTypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| SimpleTypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TSimpleType | Result of the visit.  | 
      
VisitStructural(StructuralTypeSlim)
Visits a structural type.
Declaration
protected virtual TStructuralType VisitStructural(StructuralTypeSlim type)
  Parameters
| Type | Name | Description | 
|---|---|---|
| StructuralTypeSlim | type | Type to visit.  | 
      
Returns
| Type | Description | 
|---|---|
| TStructuralType | Result of the visit.  |