#region Apache Notice /***************************************************************************** * $Revision: 374175 $ * $LastChangedDate$ * $LastChangedBy$ * * iBATIS.NET Data Mapper * Copyright (C) 2006/2005 - The Apache Software Foundation * * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ********************************************************************************/ #endregion using System.Collections; using IBatisNet.Common.Utilities.Objects; using IBatisNet.DataMapper.Configuration.ParameterMapping; using IBatisNet.DataMapper.Configuration.ResultMapping; namespace IBatisNet.DataMapper.DataExchange { /// /// DataExchange implementation for IDictionary objects /// public sealed class DictionaryDataExchange : BaseDataExchange { /// /// Cosntructor /// /// public DictionaryDataExchange(DataExchangeFactory dataExchangeFactory):base(dataExchangeFactory) { } #region IDataExchange Members /// /// Gets the data to be set into a IDataParameter. /// /// /// public override object GetData(ParameterProperty mapping, object parameterObject) { return ObjectProbe.GetMemberValue(parameterObject, mapping.PropertyName, this.DataExchangeFactory.AccessorFactory); } /// /// Sets the value to the result property. /// /// /// /// public override void SetData(ref object target, ResultProperty mapping, object dataBaseValue) { ((IDictionary) target).Add(mapping.PropertyName, dataBaseValue); } /// /// Sets the value to the parameter property. /// /// Use to set value on output parameter /// /// /// public override void SetData(ref object target, ParameterProperty mapping, object dataBaseValue) { ObjectProbe.SetMemberValue(target, mapping.PropertyName, dataBaseValue, this.DataExchangeFactory.ObjectFactory, this.DataExchangeFactory.AccessorFactory); } #endregion } }