#region Apache Notice /***************************************************************************** * $Header: $ * $Revision: $ * $Date: $ * * iBATIS.NET Data Mapper * Copyright (C) 2004 - Gilles Bayon * * * 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 #region Using using System.Data; using IBatisNet.DataMapper.Configuration.ParameterMapping; #endregion namespace IBatisNet.DataMapper.TypeHandlers { /// /// A simple interface for implementing custom type handlers. ///

/// Using this interface, you can implement a type handler that /// will perform customized processing before parameters are set /// on a IDbCommand and after values are retrieved from /// a IDataReader. Using a custom type handler you can extend /// the framework to handle types that are not supported, or /// handle supported types in a different way. For example, /// you might use a custom type handler to implement proprietary /// BLOB support (e.g. Oracle), or you might use it to handle /// booleans using "Y" and "N" instead of the more typical 0/1. ///

public interface ITypeHandlerCallback { /// /// Performs processing on a value before it is used to set /// the parameter of a IDbCommand. /// /// The interface for setting the value on the IDbCommand. /// The value to be set void SetParameter(IParameterSetter setter, object parameter); /// /// Performs processing on a value before after it has been retrieved /// from a IDataReader. /// /// The interface for getting the value from the IDataReader. /// The processed value. object GetResult(IResultGetter getter); /// /// Casts the string representation of a value into a type recognized by /// this type handler. This method is used to translate nullValue values /// into types that can be appropriately compared. If your custom type handler /// cannot support nullValues, or if there is no reasonable string representation /// for this type (e.g. File type), you can simply return the String representation /// as it was passed in. It is not recommended to return null, unless null was passed /// in. /// /// /// object ValueOf(string s); } }