<PackageReference Include="Castle.Core" Version="4.4.1" />
    
API Differences between 4.4.1 and 5.0.0-beta001
	
		687 Additions
	
	
		2 Removals
	
Castle.Core
	- 
		public class Pair<TFirst, TSecond> : IEquatable<Pair<TFirst, TSecond>>
		
			- public TFirst First { get; }
 
			- public TSecond Second { get; }
 
			- public Pair(TFirst first, TSecond second)
 
			- public bool Equals(Pair<TFirst, TSecond> other)
 
		
	 
Castle.Core.Configuration
Castle.Core.Internal
Castle.Core.Resource
Castle.DynamicProxy
Castle.DynamicProxy.Contributors
	- 
		public class ClassMembersCollector : MembersCollector
		
	
 
	- 
		public class ClassProxyInstanceContributor : ProxyInstanceContributor
		
	
 
	- 
		public class ClassProxyTargetContributor : CompositeTypeContributor
		
	
 
	- 
		public class ClassProxyWithTargetTargetContributor : CompositeTypeContributor
		
	
 
	- 
		public abstract class CompositeTypeContributor : ITypeContributor
		
	
 
	- 
		public class DelegateProxyTargetContributor : CompositeTypeContributor
		
	
 
	- 
		public class DelegateTypeGenerator : IGenerator<AbstractTypeEmitter>
		
	
 
	- 
		public class FieldReferenceComparer : IComparer<Type>
		
	
 
	- 
		public class ForwardingMethodGenerator : MethodGenerator
		
	
 
	- 
		public sealed delegate GetTargetExpressionDelegate : MulticastDelegate
		
	
 
	- 
		public sealed delegate GetTargetReferenceDelegate : MulticastDelegate
		
	
 
	- 
		public class InterfaceMembersCollector : MembersCollector
		
	
 
	- 
		public class InterfaceMembersOnClassCollector : MembersCollector
		
	
 
	- 
		public class InterfaceProxyInstanceContributor : ProxyInstanceContributor
		
	
 
	- 
		public class InterfaceProxyTargetContributor : CompositeTypeContributor
		
	
 
	- 
		public class InterfaceProxyWithOptionalTargetContributor : InterfaceProxyWithoutTargetContributor
		
	
 
	- 
		public class InterfaceProxyWithoutTargetContributor : CompositeTypeContributor
		
	
 
	- 
		public class InterfaceProxyWithTargetInterfaceTargetContributor : InterfaceProxyTargetContributor
		
	
 
	- 
		public class InvocationWithDelegateContributor : IInvocationCreationContributor
		
	
 
	- 
		public class InvocationWithGenericDelegateContributor : IInvocationCreationContributor
		
	
 
	- 
		public interface ITypeContributor
		
	
 
	- 
		public abstract class MembersCollector
		
	
 
	- 
		public class MinimialisticMethodGenerator : MethodGenerator
		
	
 
	- 
		public class MixinContributor : CompositeTypeContributor
		
	
 
	- 
		public class OptionallyForwardingMethodGenerator : MethodGenerator
		
	
 
	- 
		public sealed delegate OverrideMethodDelegate : MulticastDelegate
		
	
 
	- 
		public abstract class ProxyInstanceContributor : ITypeContributor
		
			- protected readonly Type targetType
 
			- protected ProxyInstanceContributor(Type targetType, Type[] interfaces, string proxyTypeId)
 
			- protected virtual void AddAddValueInvocation(ArgumentReference serializationInfo, MethodEmitter getObjectData, FieldReference field)
 
			- public void CollectElementsToProxy(IProxyGenerationHook hook, MetaType model)
 
			- protected abstract void CustomizeGetObjectData(AbstractCodeBuilder builder, ArgumentReference serializationInfo, ArgumentReference streamingContext, ClassEmitter emitter)
 
			- public virtual void Generate(ClassEmitter class, ProxyGenerationOptions options)
 
			- protected abstract Reference GetTargetReference(ClassEmitter emitter)
 
			- protected void ImplementGetObjectData(ClassEmitter emitter)
 
			- protected void ImplementProxyTargetAccessor(ClassEmitter emitter, FieldReference interceptorsField)
 
		
	 
	- 
		public class WrappedClassMembersCollector : ClassMembersCollector
		
	
 
Castle.DynamicProxy.Generators
	- 
		public abstract class BaseProxyGenerator
		
			- protected readonly Type targetType
 
			- public ILogger Logger { get; set; }
 
			- protected ProxyGenerationOptions ProxyGenerationOptions { get; protected set; }
 
			- protected ModuleScope Scope { get; }
 
			- protected BaseProxyGenerator(ModuleScope scope, Type targetType)
 
			- protected void AddMapping(Type interface, ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
 
			- protected void AddMappingForISerializable(IDictionary<Type, ITypeContributor> typeImplementerMapping, ITypeContributor instance)
 
			- protected void AddMappingNoCheck(Type interface, ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
 
			- protected void AddToCache(CacheKey key, Type type)
 
			- protected virtual ClassEmitter BuildClassEmitter(string typeName, Type parentType, IEnumerable<Type> interfaces)
 
			- protected void CheckNotGenericTypeDefinition(Type type, string argumentName)
 
			- protected void CheckNotGenericTypeDefinitions(IEnumerable<Type> types, string argumentName)
 
			- protected void CompleteInitCacheMethod(ConstructorCodeBuilder constCodeBuilder)
 
			- protected virtual void CreateFields(ClassEmitter emitter)
 
			- protected void CreateInterceptorsField(ClassEmitter emitter)
 
			- protected FieldReference CreateOptionsField(ClassEmitter emitter)
 
			- protected void CreateSelectorField(ClassEmitter emitter)
 
			- protected virtual void CreateTypeAttributes(ClassEmitter emitter)
 
			- protected void EnsureOptionsOverrideEqualsAndGetHashCode(ProxyGenerationOptions options)
 
			- protected void GenerateConstructor(ClassEmitter emitter, ConstructorInfo baseConstructor, FieldReference[] fields)
 
			- protected void GenerateConstructors(ClassEmitter emitter, Type baseType, FieldReference[] fields)
 
			- protected void GenerateParameterlessConstructor(ClassEmitter emitter, Type baseClass, FieldReference interceptorField)
 
			- protected ConstructorEmitter GenerateStaticConstructor(ClassEmitter emitter)
 
			- protected Type GetFromCache(CacheKey key)
 
			- protected void HandleExplicitlyPassedProxyTargetAccessor(ICollection<Type> targetInterfaces, ICollection<Type> additionalInterfaces)
 
			- protected void InitializeStaticFields(Type builtType)
 
			- protected Type ObtainProxyType(CacheKey cacheKey, Func<string, INamingScope, Type> factory)
 
		
	 
	- 
		public class CacheKey
		
	
 
	- 
		public class ClassProxyGenerator : BaseProxyGenerator
		
	
 
	- 
		public class ClassProxyWithTargetGenerator : BaseProxyGenerator
		
	
 
	- 
		public class CompositionInvocationTypeGenerator : InvocationTypeGenerator
		
	
 
	- 
		public class DelegateMembersCollector : MembersCollector
		
	
 
	- 
		public class DelegateProxyGenerationHook : IProxyGenerationHook
		
	
 
	- 
		public class DelegateProxyGenerator : BaseProxyGenerator
		
	
 
	- 
		public class GeneratorException : Exception
		
	
 
	- 
		public static class GeneratorUtil
		
	
 
	- 
		public interface IGenerator<T>
		
	
 
	- 
		public interface IInvocationCreationContributor
		
	
 
	- 
		public interface INamingScope
		
	
 
	- 
		public class InheritanceInvocationTypeGenerator : InvocationTypeGenerator
		
	
 
	- 
		public class InterfaceProxyWithoutTargetGenerator : InterfaceProxyWithTargetGenerator
		
	
 
	- 
		public class InterfaceProxyWithTargetGenerator : BaseProxyGenerator
		
			- protected FieldReference targetField
 
			- protected virtual bool AllowChangeTarget { get; }
 
			- protected virtual string GeneratorType { get; }
 
			- public InterfaceProxyWithTargetGenerator(ModuleScope scope, Type interface)
 
			- protected virtual ITypeContributor AddMappingForTargetType(IDictionary<Type, ITypeContributor> typeImplementerMapping, Type proxyTargetType, ICollection<Type> targetInterfaces, ICollection<Type> additionalInterfaces, INamingScope namingScope)
 
			- public Type GenerateCode(Type proxyTargetType, Type[] interfaces, ProxyGenerationOptions options)
 
			- protected virtual Type GenerateType(string typeName, Type proxyTargetType, Type[] interfaces, INamingScope namingScope)
 
			- protected virtual InterfaceProxyWithoutTargetContributor GetContributorForAdditionalInterfaces(INamingScope namingScope)
 
			- protected virtual IEnumerable<Type> GetTypeImplementerMapping(Type[] interfaces, Type proxyTargetType, out IEnumerable contributors, INamingScope namingScope)
 
			- protected virtual Type Init(string typeName, out ClassEmitter emitter, Type proxyTargetType, out FieldReference interceptorsField, IEnumerable<Type> interfaces)
 
		
	 
	- 
		public class InterfaceProxyWithTargetInterfaceGenerator : InterfaceProxyWithTargetGenerator
		
	
 
	- 
		public abstract class InvocationTypeGenerator : IGenerator<AbstractTypeEmitter>
		
			- protected readonly MetaMethod method
 
			- protected readonly Type targetType
 
			- protected InvocationTypeGenerator(Type targetType, MetaMethod method, MethodInfo callback, bool canChangeTarget, IInvocationCreationContributor contributor)
 
			- public AbstractTypeEmitter Generate(ClassEmitter class, ProxyGenerationOptions options, INamingScope namingScope)
 
			- protected abstract ArgumentReference[] GetBaseCtorArguments(Type targetFieldType, ProxyGenerationOptions proxyGenerationOptions, out ConstructorInfo baseConstructor)
 
			- protected abstract Type GetBaseType()
 
			- protected virtual MethodInvocationExpression GetCallbackMethodInvocation(AbstractTypeEmitter invocation, Expression[] args, MethodInfo callbackMethod, Reference targetField, MethodEmitter invokeMethodOnTarget)
 
			- protected abstract FieldReference GetTargetReference()
 
			- protected virtual void ImplementInvokeMethodOnTarget(AbstractTypeEmitter invocation, ParameterInfo[] parameters, MethodEmitter invokeMethodOnTarget, Reference targetField)
 
		
	 
	- 
		public class MetaEvent : MetaTypeElement, IEquatable<MetaEvent>
		
	
 
	- 
		public class MetaMethod : MetaTypeElement, IEquatable<MetaMethod>
		
	
 
	- 
		public class MetaProperty : MetaTypeElement, IEquatable<MetaProperty>
		
	
 
	- 
		public class MetaType
		
	
 
	- 
		public abstract class MetaTypeElement
		
	
 
	- 
		public class MethodFinder
		
	
 
	- 
		public abstract class MethodGenerator : IGenerator<MethodEmitter>
		
	
 
	- 
		public class MethodSignatureComparer : IEqualityComparer<MethodInfo>
		
	
 
	- 
		public class MethodWithInvocationGenerator : MethodGenerator
		
			- public MethodWithInvocationGenerator(MetaMethod method, Reference interceptors, Type invocation, GetTargetExpressionDelegate getTargetExpression, OverrideMethodDelegate createMethod, IInvocationCreationContributor contributor)
 
			- public MethodWithInvocationGenerator(MetaMethod method, Reference interceptors, Type invocation, GetTargetExpressionDelegate getTargetExpression, GetTargetExpressionDelegate getTargetTypeExpression, OverrideMethodDelegate createMethod, IInvocationCreationContributor contributor)
 
			- protected FieldReference BuildMethodInterceptorsField(ClassEmitter class, MethodInfo method, INamingScope namingScope)
 
		
	 
	- 
		public class NamingScope : INamingScope
		
	
 
	- 
		public class TypeElementCollection<TElement> : ICollection<TElement>, IEnumerable<TElement>, IEnumerable where TElement : MetaTypeElement, IEquatable<TElement>
		
	
 
Castle.DynamicProxy.Generators.Emitters
	- 
		public abstract class AbstractTypeEmitter
		
			- public Type BaseType { get; }
 
			- public TypeConstructorEmitter ClassConstructor { get; }
 
			- public ConstructorCollection Constructors { get; }
 
			- public GenericTypeParameterBuilder[] GenericTypeParams { get; }
 
			- public NestedClassCollection Nested { get; }
 
			- public TypeBuilder TypeBuilder { get; }
 
			- protected AbstractTypeEmitter(TypeBuilder typeBuilder)
 
			- public void AddCustomAttributes(ProxyGenerationOptions proxyGenerationOptions)
 
			- public virtual Type BuildType()
 
			- public void CopyGenericParametersFromMethod(MethodInfo methodToCopyGenericsFrom)
 
			- public ConstructorEmitter CreateConstructor(ArgumentReference[] arguments)
 
			- public void CreateDefaultConstructor()
 
			- public EventEmitter CreateEvent(string name, EventAttributes atts, Type type)
 
			- public FieldReference CreateField(string name, Type fieldType)
 
			- public FieldReference CreateField(string name, Type fieldType, bool serializable)
 
			- public FieldReference CreateField(string name, Type fieldType, FieldAttributes atts)
 
			- public MethodEmitter CreateMethod(string name, MethodAttributes attrs, Type returnType, Type[] argumentTypes)
 
			- public MethodEmitter CreateMethod(string name, Type returnType, Type[] parameterTypes)
 
			- public MethodEmitter CreateMethod(string name, MethodInfo methodToUseAsATemplate)
 
			- public MethodEmitter CreateMethod(string name, MethodAttributes attributes, MethodInfo methodToUseAsATemplate)
 
			- public PropertyEmitter CreateProperty(string name, PropertyAttributes attributes, Type propertyType, Type[] arguments)
 
			- public FieldReference CreateStaticField(string name, Type fieldType)
 
			- public FieldReference CreateStaticField(string name, Type fieldType, FieldAttributes atts)
 
			- protected Type CreateType(TypeBuilder type)
 
			- public ConstructorEmitter CreateTypeConstructor()
 
			- public void DefineCustomAttribute(CustomAttributeBuilder attribute)
 
			- public void DefineCustomAttribute<TAttribute>(object[] constructorArguments) where TAttribute : Attribute
 
			- public void DefineCustomAttribute<TAttribute>() where TAttribute : Attribute
 
			- public void DefineCustomAttributeFor<TAttribute>(FieldReference field) where TAttribute : Attribute
 
			- protected virtual void EnsureBuildersAreInAValidState()
 
			- public IEnumerable<FieldReference> GetAllFields()
 
			- public FieldReference GetField(string name)
 
			- public Type GetGenericArgument(string genericArgumentName)
 
			- public Type[] GetGenericArgumentsFor(Type genericType)
 
			- public Type[] GetGenericArgumentsFor(MethodInfo genericMethod)
 
			- public void SetGenericTypeParameters(GenericTypeParameterBuilder[] genericTypeParameterBuilders)
 
		
	 
	- 
		public abstract class ArgumentsUtil
		
	
 
	- 
		public class ClassEmitter : AbstractTypeEmitter
		
			- public ModuleScope ModuleScope { get; }
 
			- public ClassEmitter(ModuleScope modulescope, string name, Type baseType, IEnumerable<Type> interfaces)
 
			- public ClassEmitter(ModuleScope modulescope, string name, Type baseType, IEnumerable<Type> interfaces, TypeAttributes flags)
 
			- public ClassEmitter(ModuleScope modulescope, string name, Type baseType, IEnumerable<Type> interfaces, TypeAttributes flags, bool forceUnsigned)
 
			- public ClassEmitter(TypeBuilder typeBuilder)
 
			- protected virtual IEnumerable<Type> InitializeGenericArgumentsFromBases(ref Type baseType, IEnumerable<Type> interfaces)
 
		
	 
	- 
		public class ConstructorCollection : Collection<ConstructorEmitter>
		
	
 
	- 
		public class ConstructorEmitter : IMemberEmitter
		
	
 
	- 
		public class EventCollection : Collection<EventEmitter>
		
	
 
	- 
		public class EventEmitter : IMemberEmitter
		
	
 
	- 
		public interface IMemberEmitter
		
	
 
	- 
		public sealed class LdcOpCodesDictionary : Dictionary<Type, OpCode>
		
	
 
	- 
		public sealed class LdindOpCodesDictionary : Dictionary<Type, OpCode>
		
	
 
	- 
		public class MethodCollection : Collection<MethodEmitter>
		
	
 
	- 
		public class MethodEmitter : IMemberEmitter
		
	
 
	- 
		public class NestedClassCollection : Collection<NestedClassEmitter>
		
	
 
	- 
		public class NestedClassEmitter : AbstractTypeEmitter
		
	
 
	- 
		public class PropertiesCollection : Collection<PropertyEmitter>
		
	
 
	- 
		public class PropertyEmitter : IMemberEmitter
		
			- public MemberInfo Member { get; }
 
			- public Type ReturnType { get; }
 
			- public PropertyEmitter(AbstractTypeEmitter parentTypeEmitter, string name, PropertyAttributes attributes, Type propertyType, Type[] arguments)
 
			- public MethodEmitter CreateGetMethod(string name, MethodAttributes attrs, MethodInfo methodToOverride, Type[] parameters)
 
			- public MethodEmitter CreateGetMethod(string name, MethodAttributes attributes, MethodInfo methodToOverride)
 
			- public MethodEmitter CreateSetMethod(string name, MethodAttributes attrs, MethodInfo methodToOverride, Type[] parameters)
 
			- public MethodEmitter CreateSetMethod(string name, MethodAttributes attributes, MethodInfo methodToOverride)
 
			- public void DefineCustomAttribute(CustomAttributeBuilder attribute)
 
			- public void EnsureValidCodeBlock()
 
			- public void Generate()
 
		
	 
	- 
		public sealed class StindOpCodesDictionary : Dictionary<Type, OpCode>
		
	
 
	- 
		public static class StrongNameUtil
		
	
 
	- 
		public class TypeConstructorEmitter : ConstructorEmitter
		
	
 
Castle.DynamicProxy.Generators.Emitters.CodeBuilders
Castle.DynamicProxy.Generators.Emitters.SimpleAST
Castle.DynamicProxy.Internal
Castle.DynamicProxy.Serialization
Castle.DynamicProxy.Tokens