diff --git a/Dalamud/Dalamud.csproj b/Dalamud/Dalamud.csproj
index 9cf3129d0..ac205b02b 100644
--- a/Dalamud/Dalamud.csproj
+++ b/Dalamud/Dalamud.csproj
@@ -4,7 +4,7 @@
net7.0-windows
x64
x64;AnyCPU
- 10.0
+ 11.0
diff --git a/Dalamud/Interface/Internal/Windows/DataWindow.cs b/Dalamud/Interface/Internal/Windows/DataWindow.cs
index 7e756b057..1b594e34d 100644
--- a/Dalamud/Interface/Internal/Windows/DataWindow.cs
+++ b/Dalamud/Interface/Internal/Windows/DataWindow.cs
@@ -44,6 +44,7 @@ using Lumina.Excel.GeneratedSheets;
using Newtonsoft.Json;
using PInvoke;
using Serilog;
+
using Condition = Dalamud.Game.ClientState.Conditions.Condition;
namespace Dalamud.Interface.Internal.Windows;
@@ -1728,11 +1729,11 @@ internal class DataWindow : Window
foreach (var color in colorSheet)
{
- this.DrawUIColor(color);
+ this.DrawUiColor(color);
}
}
- private void DrawUIColor(UIColor color)
+ private void DrawUiColor(UIColor color)
{
ImGui.Text($"[{color.RowId:D3}] ");
ImGui.SameLine();
@@ -1750,7 +1751,7 @@ internal class DataWindow : Window
var r = (byte)(color >> 24);
var g = (byte)(color >> 16);
var b = (byte)(color >> 8);
- var a = (byte)(color);
+ var a = (byte)color;
return new Vector4(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f);
}
diff --git a/Dalamud/IoC/Internal/InherentDependencyAttribute.cs b/Dalamud/IoC/Internal/InherentDependencyAttribute.cs
new file mode 100644
index 000000000..f88adf366
--- /dev/null
+++ b/Dalamud/IoC/Internal/InherentDependencyAttribute.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace Dalamud.IoC.Internal;
+
+///
+/// Mark a class as being dependent on a service, without actually injecting it.
+///
+/// The service to be dependent upon.
+[AttributeUsage(AttributeTargets.Class)]
+internal class InherentDependencyAttribute : InherentDependencyAttribute where T : IServiceType
+{
+}
+
+///
+/// Helper class used for matching. Use the generic version.
+///
+[AttributeUsage(AttributeTargets.Class)]
+internal class InherentDependencyAttribute : Attribute
+{
+}
diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs
index 3dd5de1a9..26ba996e1 100644
--- a/Dalamud/Plugin/Internal/PluginManager.cs
+++ b/Dalamud/Plugin/Internal/PluginManager.cs
@@ -20,6 +20,7 @@ using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface.Internal;
+using Dalamud.IoC.Internal;
using Dalamud.Logging.Internal;
using Dalamud.Plugin.Internal.Exceptions;
using Dalamud.Plugin.Internal.Types;
@@ -33,6 +34,9 @@ namespace Dalamud.Plugin.Internal;
/// Class responsible for loading and unloading plugins.
///
[ServiceManager.EarlyLoadedService]
+#pragma warning disable SA1015
+[InherentDependency]
+#pragma warning restore SA1015
internal partial class PluginManager : IDisposable, IServiceType
{
///
diff --git a/Dalamud/Service{T}.cs b/Dalamud/Service{T}.cs
index 5b8085ac8..8f805b5af 100644
--- a/Dalamud/Service{T}.cs
+++ b/Dalamud/Service{T}.cs
@@ -128,6 +128,11 @@ internal static class Service where T : IServiceType
.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.Select(x => x.FieldType)
.Where(x => x.GetCustomAttribute(true) != null));
+ res.AddRange(typeof(T)
+ .GetCustomAttributes()
+ .OfType()
+ .Select(x => x.GetType().GetGenericArguments().First()));
+
return res
.Distinct()
.Select(x => typeof(Service<>).MakeGenericType(x))