public void TypeAccessorBuilder_BuildSetterFromStringOnPrivateProperty() { var control = new PrivatePropertyObject("Peter"); var experimental = new PrivatePropertyObject("Kyle"); var builder = new TypeAccessorBuilder<PrivatePropertyObject>(); var setter = builder.BuildSetter("Name"); setter.SetterAction(ref experimental, "Peter"); Assert.AreEqual(control.GetName(), experimental.GetName(), "Setter should assign the given value to the property."); }
public void TypeAccessorBuilder_BuildSetterFromString() { var control = new SinglePropertyObject() { Id = 1 }; var experimental = new SinglePropertyObject() { Id = 1 }; var builder = new TypeAccessorBuilder<SinglePropertyObject>(); var setter = builder.BuildSetter("Id"); control.Id = 10; setter.SetterAction(ref experimental, 10); Assert.AreEqual(control.Id, experimental.Id, "Setter should assign the given value to the property."); }
public static TypeAccessor GetAccessor(Type originalType) { if (originalType == null) { throw new ArgumentNullException("originalType"); } TypeAccessor accessor = (TypeAccessor)_accessors[originalType]; if (accessor == null) { lock (_accessors.SyncRoot) { accessor = (TypeAccessor)_accessors[originalType]; if (accessor == null) { if (IsAssociatedType(originalType)) { return((TypeAccessor)_accessors[originalType]); } Type instanceType = IsClassBulderNeeded(originalType)? null: originalType; Type accessorType = null; if (_loadTypes) { Assembly originalAssembly = originalType.Assembly; Assembly extensionAssembly; if (_assemblies.Contains(originalAssembly)) { extensionAssembly = (Assembly)_assemblies[originalAssembly]; } else { extensionAssembly = LoadExtensionAssembly(originalAssembly); _assemblies.Add(originalAssembly, extensionAssembly); } if (extensionAssembly != null) { if (instanceType == null) { instanceType = extensionAssembly.GetType( AbstractClassBuilder.GetTypeName(originalType)); } if (instanceType != null) { accessorType = extensionAssembly.GetType( TypeAccessorBuilder.GetTypeAccessorClassName(instanceType)); } } } if (accessorType == null) { if (instanceType == null) { instanceType = TypeFactory.GetType(originalType, new AbstractClassBuilder()); } accessorType = TypeFactory.GetType(originalType, new TypeAccessorBuilder(instanceType, originalType)); } accessor = (TypeAccessor)Activator.CreateInstance(accessorType); _accessors[originalType] = accessor; if (originalType != instanceType) { _accessors[instanceType] = accessor; } } } } return(accessor); }
public void TypeAccessorBuilder_BuildGetterFromString() { var control = new SinglePropertyObject() { Id = 42 }; var experimental = new SinglePropertyObject() { Id = 42 }; var builder = new TypeAccessorBuilder<SinglePropertyObject>(); var getter = builder.BuildGetter("Id"); var controlResult = control.Id; var experimentalResult = getter(experimental); Assert.AreEqual(controlResult, experimentalResult, "Getter should return the value assigned to the property."); }
public void TypeAccessorBuilder_BuildGetterFromStringOnPrivateProperty() { var experimental = new PrivatePropertyObject("Kyle"); var builder = new TypeAccessorBuilder<PrivatePropertyObject>(); var getter = builder.BuildGetter("Name"); const string controlResult = "Kyle"; var experimentalResult = getter(experimental); Assert.AreEqual(controlResult, experimentalResult, "Getter should return the value assigned to the property."); }