diff --git a/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs b/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs index 1c9b08f636..63562eb53e 100644 --- a/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs +++ b/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs @@ -94,13 +94,13 @@ namespace Umbraco.Core.Events { get { return (T) base.EventObject; } set { base.EventObject = value; } - } + } public bool Equals(CancellableObjectEventArgs other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; - return base.Equals(other) && EqualityComparer.Default.Equals(EventObject, other.EventObject); + return base.Equals(other) && EqualityComparer.Default.Equals(EventObject, other.EventObject); } public override bool Equals(object obj) @@ -133,31 +133,31 @@ namespace Umbraco.Core.Events [HostProtection(SecurityAction.LinkDemand, SharedState = true)] public class CancellableEnumerableObjectEventArgs : CancellableObjectEventArgs>, IEquatable> { - public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, bool canCancel, EventMessages messages, IDictionary additionalData) : base(eventObject, canCancel, messages, additionalData) - { - } + public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, bool canCancel, EventMessages messages, IDictionary additionalData) + : base(eventObject, canCancel, messages, additionalData) + { } - public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, bool canCancel, EventMessages eventMessages) : base(eventObject, canCancel, eventMessages) - { - } + public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, bool canCancel, EventMessages eventMessages) + : base(eventObject, canCancel, eventMessages) + { } - public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, EventMessages eventMessages) : base(eventObject, eventMessages) - { - } + public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, EventMessages eventMessages) + : base(eventObject, eventMessages) + { } - public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, bool canCancel) : base(eventObject, canCancel) - { - } + public CancellableEnumerableObjectEventArgs(IEnumerable eventObject, bool canCancel) + : base(eventObject, canCancel) + { } - public CancellableEnumerableObjectEventArgs(IEnumerable eventObject) : base(eventObject) - { - } + public CancellableEnumerableObjectEventArgs(IEnumerable eventObject) + : base(eventObject) + { } public bool Equals(CancellableEnumerableObjectEventArgs other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; - + return EventObject.SequenceEqual(other.EventObject); } diff --git a/src/Umbraco.Core/Events/ScopeEventDispatcherBase.cs b/src/Umbraco.Core/Events/ScopeEventDispatcherBase.cs index 581f117979..c703a10cb4 100644 --- a/src/Umbraco.Core/Events/ScopeEventDispatcherBase.cs +++ b/src/Umbraco.Core/Events/ScopeEventDispatcherBase.cs @@ -150,7 +150,7 @@ namespace Umbraco.Core.Events var args = eventDefinition.Args as CancellableObjectEventArgs; if (args != null) { - var list = TypeHelper.CreateGenericEnumerableFromOjbect(args.EventObject); + var list = TypeHelper.CreateGenericEnumerableFromObject(args.EventObject); if (list == null) { @@ -248,7 +248,7 @@ namespace Umbraco.Core.Events foreach (var args in cancelableArgs) { - var list = TypeHelper.CreateGenericEnumerableFromOjbect(args.EventObject); + var list = TypeHelper.CreateGenericEnumerableFromObject(args.EventObject); if (list == null) { //try to find the args entity in the latest entity - based on the equality operators, this will diff --git a/src/Umbraco.Core/Models/EntityBase/IAggregateRoot.cs b/src/Umbraco.Core/Models/EntityBase/IAggregateRoot.cs index 8ba1e09c99..aacb5185e0 100644 --- a/src/Umbraco.Core/Models/EntityBase/IAggregateRoot.cs +++ b/src/Umbraco.Core/Models/EntityBase/IAggregateRoot.cs @@ -3,7 +3,7 @@ /// /// Marker interface for aggregate roots /// - public interface IAggregateRoot : IEntityDeleted + public interface IAggregateRoot : IDeletableEntity { } diff --git a/src/Umbraco.Core/Models/EntityBase/IDeletableEntity.cs b/src/Umbraco.Core/Models/EntityBase/IDeletableEntity.cs new file mode 100644 index 0000000000..42f91b6a6c --- /dev/null +++ b/src/Umbraco.Core/Models/EntityBase/IDeletableEntity.cs @@ -0,0 +1,11 @@ +using System; +using System.Runtime.Serialization; + +namespace Umbraco.Core.Models.EntityBase +{ + public interface IDeletableEntity : IEntity + { + [DataMember] + DateTime? DeletedDate { get; set; } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Models/EntityBase/IEntity.cs b/src/Umbraco.Core/Models/EntityBase/IEntity.cs index a16a7daf2b..059983bb38 100644 --- a/src/Umbraco.Core/Models/EntityBase/IEntity.cs +++ b/src/Umbraco.Core/Models/EntityBase/IEntity.cs @@ -3,12 +3,6 @@ using System.Runtime.Serialization; namespace Umbraco.Core.Models.EntityBase { - public interface IEntityDeleted : IEntity - { - [DataMember] - DateTime? DeletedDate { get; set; } - } - /// /// Defines an Entity. /// Entities should always have an Id, Created and Modified date @@ -26,7 +20,7 @@ namespace Umbraco.Core.Models.EntityBase /// /// Guid based Id /// - /// The key is currectly used to store the Unique Id from the + /// The key is currectly used to store the Unique Id from the /// umbracoNode table, which many of the entities are based on. [DataMember] Guid Key { get; set; } diff --git a/src/Umbraco.Core/TypeHelper.cs b/src/Umbraco.Core/TypeHelper.cs index f8e10ff1fb..166b7e308f 100644 --- a/src/Umbraco.Core/TypeHelper.cs +++ b/src/Umbraco.Core/TypeHelper.cs @@ -16,31 +16,31 @@ namespace Umbraco.Core { private static readonly ConcurrentDictionary, PropertyInfo[]> GetPropertiesCache = new ConcurrentDictionary, PropertyInfo[]>(); - private static readonly ConcurrentDictionary GetFieldsCache + private static readonly ConcurrentDictionary GetFieldsCache = new ConcurrentDictionary(); - private static readonly Assembly[] EmptyAssemblies = new Assembly[0]; - + private static readonly Assembly[] EmptyAssemblies = new Assembly[0]; + /// /// Based on a type we'll check if it is IEnumerable{T} (or similar) and if so we'll return a List{T}, this will also deal with array types and return List{T} for those too. /// If it cannot be done, null is returned. /// /// /// - internal static IList CreateGenericEnumerableFromOjbect(object obj) + internal static IList CreateGenericEnumerableFromObject(object obj) { var type = obj.GetType(); - + if (type.IsGenericType) { - var genericTypeDef = type.GetGenericTypeDefinition(); + var genericTypeDef = type.GetGenericTypeDefinition(); if (genericTypeDef == typeof(IEnumerable<>) || genericTypeDef == typeof(ICollection<>) || genericTypeDef == typeof(Collection<>) || genericTypeDef == typeof(IList<>) - || genericTypeDef == typeof(List<>) - //this will occur when Linq is used and we get the odd WhereIterator or DistinctIterators since those are special iterator types + || genericTypeDef == typeof(List<>) + //this will occur when Linq is used and we get the odd WhereIterator or DistinctIterators since those are special iterator types || obj is IEnumerable) { //if it is a IEnumerable<>, IList or ICollection<> we'll use a List<> @@ -49,16 +49,17 @@ namespace Umbraco.Core return (IList)Activator.CreateInstance(genericType, obj); } } + if (type.IsArray) - { + { //if its an array, we'll use a List<> - var genericType = typeof(List<>).MakeGenericType(type.GetElementType()); + var genericType = typeof(List<>).MakeGenericType(type.GetElementType()); //pass in obj to fill the list - return (IList)Activator.CreateInstance(genericType, obj); - } - + return (IList)Activator.CreateInstance(genericType, obj); + } + return null; - } + } /// /// Checks if the method is actually overriding a base method @@ -85,8 +86,8 @@ namespace Umbraco.Core if (assembly.IsAppCodeAssembly() || assembly.IsGlobalAsaxAssembly()) return EmptyAssemblies; - - // find all assembly references that are referencing the current type's assembly since we + + // find all assembly references that are referencing the current type's assembly since we // should only be scanning those assemblies because any other assembly will definitely not // contain sub type's of the one we're currently looking for var name = assembly.GetName().Name; diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 270fbbc323..795ad24328 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -343,6 +343,7 @@ +