コード例 #1
0
ファイル: FunctionMapping.cs プロジェクト: mlhuong/HMapper
 /// <summary>
 /// Private Constructor
 /// </summary>
 /// <param name="sourceDeclaringType"></params
 /// <param name="resultType"></param>
 /// <param name="expression"></param>
 /// <param name="retrievalMode"></param>
 private FunctionMapping(Type sourceDeclaringType, Type resultType, LambdaExpression expression, RetrievalMode retrievalMode)
 {
     SourceDeclaringType = sourceDeclaringType;
     SourceResultType    = resultType;
     MappedExpression    = expression;
     RetrievalMode       = retrievalMode;
 }
コード例 #2
0
 /// <summary>
 /// Constructs the Retriever by specifying how to get the commands.
 /// </summary>
 /// <param name="mode">The retrieval mode: one of "f", "c", "dbg"</param>
 public CommandsRetriever(string mode)
 {
     this._mode = (mode == "dbg"
                         ? RetrievalMode.Debug
                         : mode == "f"
                         ? RetrievalMode.File
                         : mode == "c"
                         ? RetrievalMode.Console
                         : (RetrievalMode?)null) ?? throw new ArgumentOutOfRangeException($"Mode {mode} is not supported");
 }
コード例 #3
0
ファイル: FileManager.cs プロジェクト: LuisVCSilva/3GraphsOut
 public void Retrieve(string filename, RetrievalMode flag)
 {
     if (flag == RetrievalMode.ALWAYS_ONLINE)
     {
         this.filename = filename;
     }
     if (flag == RetrievalMode.ALWAYS_OFFLINE)
     {
         result = ReadFile(filename);
     }
     if (flag == RetrievalMode.AUTO)
     {
         Retrieve(filename, RetrievalMode.ALWAYS_OFFLINE);
         if (result == null)
         {
             Retrieve(filename, RetrievalMode.ALWAYS_ONLINE);
         }
     }
 }
コード例 #4
0
        /// <summary>
        /// Link the current target member to the specified source member.
        /// </summary>
        /// <param name="sourceMember">Source member.</param>
        /// <param name="inclusionManaged">Indicates if this member is managed by inclusion specification.</param>
        /// <returns></returns>
        public IMapperAPIMember LinkTo(string sourceMember, RetrievalMode retrievalMode)
        {
            if (_MapperAPI._MapInfo.Members.ContainsKey(_TargetMember))
            {
                throw new Exception(String.Format("The target member {0} of type {1} is already mapped.", _TargetMember.Name, _TargetMember.DeclaringType.FullName));
            }

            var members = _MapperAPI._SourceType.GetMember(sourceMember, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);

            if (members.Length == 0)
            {
                throw new Exception(String.Format("No member with name {0} can be found in type {1}.", sourceMember, _MapperAPI._SourceType.FullName));
            }

            if (members.Length > 1)
            {
                throw new Exception(String.Format("More than one member with name {0} can be found in type {1}.", sourceMember, _MapperAPI._SourceType.FullName));
            }

            _MapperAPI._MapInfo.Members.Add(_TargetMember, new MemberMapping(members[0], retrievalMode));
            return(this);
        }
コード例 #5
0
ファイル: MapperAPIMember_TS.cs プロジェクト: mlhuong/HMapper
        /// <summary>
        /// Link the current target member to the specified source member.
        /// </summary>
        /// <typeparam name="TSourceProperty">Type of the source property.</typeparam>
        /// <param name="sourceMember">Expression representing the source property.</param>
        /// <param name="retrievalMode">Indicates the retrieval mode.</param>
        /// <returns></returns>
        public IMapperAPIMember <TSource, TTarget> LinkTo <TSourceProperty>(Expression <Func <TSource, TSourceProperty> > sourceMember, RetrievalMode retrievalMode)
        {
            if (_MapperAPI._MapInfo.Members.ContainsKey(_TargetMember))
            {
                throw new Exception(String.Format("The target member {0} of type {1} is already mapped.", _TargetMember.Name, typeof(TTarget).FullName));
            }

            MemberExpression memberExpr = sourceMember.Body as MemberExpression;

            if (memberExpr == null || !(memberExpr.Expression is ParameterExpression))
            {
                _MapperAPI._MapInfo.Members.Add(_TargetMember, FunctionMapping.Create(sourceMember, retrievalMode));
            }
            else
            {
                _MapperAPI._MapInfo.Members.Add(_TargetMember, new MemberMapping(memberExpr.Member, retrievalMode));
            }
            return(this);
        }
コード例 #6
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="member"></param>
 internal MemberMapping(MemberInfo member, RetrievalMode retrievalMode)
 {
     Member        = member;
     RetrievalMode = retrievalMode;
 }
コード例 #7
0
ファイル: FunctionMapping.cs プロジェクト: mlhuong/HMapper
 /// <summary>
 /// Builds a FunctionMapping given a Func parameter.
 /// </summary>
 /// <param name="function"></param>
 static internal FunctionMapping Create <TSource, TResult>(Expression <Func <TSource, TResult> > function, RetrievalMode retrievalMode)
 {
     return(new FunctionMapping(typeof(TSource), typeof(TResult), function, retrievalMode));
 }