TypeTableEntry.SetDefault C# (CSharp) Method

SetDefault() private method

private SetDefault ( PolymorphismTarget target, string memberName, int tupleItemNumber, PolymorphismSchema defaultSchema ) : void
target PolymorphismTarget
memberName string
tupleItemNumber int
defaultSchema PolymorphismSchema
return void
			private void SetDefault( PolymorphismTarget target, string memberName, int tupleItemNumber, PolymorphismSchema defaultSchema )
			{
				if ( this._useTypeEmbedding || this._knownTypeMapping.Count > 0 )
				{
					// Default is not required.
					return;
				}

				switch ( defaultSchema.PolymorphismType )
				{
					case PolymorphismType.KnownTypes:
					{
						foreach ( var typeMapping in defaultSchema.CodeTypeMapping )
						{
							this.SetKnownType( target, memberName, tupleItemNumber, typeMapping.Key, typeMapping.Value );
						}

						break;
					}
					case PolymorphismType.RuntimeType:
					{
						this.SetRuntimeType( target, memberName, tupleItemNumber, defaultSchema.TypeVerifier );
						break;
					}
				}
			}

Usage Example

			public static TypeTableEntry Create( MemberInfo member, PolymorphismTarget targetType, PolymorphismSchema defaultSchema )
			{
				var result = new TypeTableEntry();
				var memberName = member.ToString();
				foreach (
					var attribute in
						member.GetCustomAttributes( false )
							.OfType<IPolymorphicHelperAttribute>()
							.Where( a => a.Target == targetType )
				)
				{
					// TupleItem schema should never come here, so passing -1 as tupleItemNumber is OK.
					result.Interpret( attribute, memberName, -1 );
				}

				if ( defaultSchema != null )
				{
					// TupleItem schema should never come here, so passing -1 as tupleItemNumber is OK.
					result.SetDefault( targetType, memberName, -1, defaultSchema );
				}

				return result;
			}