1 // 2 // MetaAccessor_2.cs 3 // 4 // Author: 5 // Atsushi Enomoto <atsushi@ximian.com> 6 // 7 // Copyright (C) 2008 Novell, Inc. 8 // 9 10 // 11 // Permission is hereby granted, free of charge, to any person obtaining 12 // a copy of this software and associated documentation files (the 13 // "Software"), to deal in the Software without restriction, including 14 // without limitation the rights to use, copy, modify, merge, publish, 15 // distribute, sublicense, and/or sell copies of the Software, and to 16 // permit persons to whom the Software is furnished to do so, subject to 17 // the following conditions: 18 // 19 // The above copyright notice and this permission notice shall be 20 // included in all copies or substantial portions of the Software. 21 // 22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 // 30 using System; 31 32 namespace System.Data.Linq.Mapping 33 { 34 public abstract class MetaAccessor<TEntity, TMember> : MetaAccessor 35 { 36 public override Type Type { 37 get { return typeof (TEntity); } 38 } 39 GetBoxedValue(object instance)40 public override object GetBoxedValue (object instance) 41 { 42 return GetValue ((TEntity) instance); 43 } 44 GetValue(TEntity instance)45 public abstract TMember GetValue (TEntity instance); 46 SetBoxedValue(ref object instance, object value)47 public override void SetBoxedValue (ref object instance, object value) 48 { 49 TEntity ent = (TEntity) instance; 50 SetValue (ref ent, (TMember) value); 51 instance = ent; 52 } 53 SetValue(ref TEntity instance, TMember value)54 public abstract void SetValue (ref TEntity instance, TMember value); 55 } 56 } 57