diff --git a/LightweightIocContainer/Annotations/IocIgnoreConstructorAttribute.cs b/LightweightIocContainer/Annotations/IocIgnoreConstructorAttribute.cs
deleted file mode 100644
index 9470dfd..0000000
--- a/LightweightIocContainer/Annotations/IocIgnoreConstructorAttribute.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Author: Gockner, Simon
-// Created: 2022-09-01
-// Copyright(c) 2022 SimonG. All Rights Reserved.
-
-using LightweightIocContainer.Interfaces;
-
-namespace LightweightIocContainer.Annotations;
-
-///
-/// If a constructor is annotated with this attribute it will be ignored by the
-///
-[AttributeUsage(AttributeTargets.Constructor)]
-public class IocIgnoreConstructorAttribute : Attribute
-{
-
-}
\ No newline at end of file
diff --git a/LightweightIocContainer/Exceptions/InvalidIgnoreConstructorAttributeException.cs b/LightweightIocContainer/Exceptions/InvalidIgnoreConstructorAttributeException.cs
new file mode 100644
index 0000000..8b46f7a
--- /dev/null
+++ b/LightweightIocContainer/Exceptions/InvalidIgnoreConstructorAttributeException.cs
@@ -0,0 +1,21 @@
+// Author: Gockner, Simon
+// Created: 2022-09-06
+// Copyright(c) 2022 SimonG. All Rights Reserved.
+
+namespace LightweightIocContainer.Exceptions;
+
+///
+/// The passed can't be used on a constructor
+///
+/// The used
+public class InvalidIgnoreConstructorAttributeException : IocContainerException
+{
+ ///
+ /// The passed can't be used on a constructor
+ ///
+ public InvalidIgnoreConstructorAttributeException()
+ : base($"The passed Attribute ({typeof(T)}) can't be used on a constructor.")
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/LightweightIocContainer/Interfaces/IIocContainer.cs b/LightweightIocContainer/Interfaces/IIocContainer.cs
index 4b0ec0d..dffad84 100644
--- a/LightweightIocContainer/Interfaces/IIocContainer.cs
+++ b/LightweightIocContainer/Interfaces/IIocContainer.cs
@@ -2,6 +2,7 @@
// Created: 2019-05-20
// Copyright(c) 2019 SimonG. All Rights Reserved.
+using LightweightIocContainer.Exceptions;
using LightweightIocContainer.Interfaces.Installers;
using LightweightIocContainer.Interfaces.Registrations;
@@ -37,4 +38,11 @@ public interface IIocContainer : IDisposable
/// The given
/// True if the given is registered with this , false if not
bool IsTypeRegistered();
+
+ ///
+ /// Register a custom that can annotate a constructor to be ignored
+ ///
+ /// The custom
+ /// The passed can't be used on a constructor
+ void RegisterIgnoreConstructorAttribute() where T : Attribute;
}
\ No newline at end of file
diff --git a/LightweightIocContainer/IocContainer.cs b/LightweightIocContainer/IocContainer.cs
index 17155f9..0a82dce 100644
--- a/LightweightIocContainer/IocContainer.cs
+++ b/LightweightIocContainer/IocContainer.cs
@@ -4,7 +4,6 @@
using System.Reflection;
using System.Runtime.CompilerServices;
-using LightweightIocContainer.Annotations;
using LightweightIocContainer.Exceptions;
using LightweightIocContainer.Interfaces;
using LightweightIocContainer.Interfaces.Factories;
@@ -26,17 +25,20 @@ public class IocContainer : IIocContainer, IIocResolver
private readonly List<(Type type, object? instance)> _singletons = new();
private readonly List<(Type type, Type scope, ConditionalWeakTable