diff --git a/src/NServiceBus.AcceptanceTests/Core/DependencyInjection/When_endpoint_is_warmed_up.cs b/src/NServiceBus.AcceptanceTests/Core/DependencyInjection/When_endpoint_is_warmed_up.cs index b2c4b545fc..aa9733ae0d 100644 --- a/src/NServiceBus.AcceptanceTests/Core/DependencyInjection/When_endpoint_is_warmed_up.cs +++ b/src/NServiceBus.AcceptanceTests/Core/DependencyInjection/When_endpoint_is_warmed_up.cs @@ -115,7 +115,7 @@ class SpyContainer : IServiceProvider, IServiceScopeFactory public SpyContainer(IServiceCollection serviceCollection) { foreach (var serviceDescriptor in serviceCollection - .Where(sd => sd.ServiceType.Assembly == typeof(IMessage).Assembly)) + .Where(sd => sd.ServiceType.Assembly == typeof(EndpointConfiguration).Assembly)) { RegisteredServices[serviceDescriptor.ServiceType] = new RegisteredService { diff --git a/src/NServiceBus.Core.Analyzer.Tests.Common/Helpers/AnalyzerTestFixture.cs b/src/NServiceBus.Core.Analyzer.Tests.Common/Helpers/AnalyzerTestFixture.cs index b98dffcce2..fb8fb5ea58 100644 --- a/src/NServiceBus.Core.Analyzer.Tests.Common/Helpers/AnalyzerTestFixture.cs +++ b/src/NServiceBus.Core.Analyzer.Tests.Common/Helpers/AnalyzerTestFixture.cs @@ -114,6 +114,7 @@ static AnalyzerTestFixture() MetadataReference.CreateFromFile(Assembly.Load("System.Private.CoreLib").Location), #endif MetadataReference.CreateFromFile(typeof(EndpointConfiguration).GetTypeInfo().Assembly.Location), + MetadataReference.CreateFromFile(typeof(IMessage).GetTypeInfo().Assembly.Location), MetadataReference.CreateFromFile(typeof(IUniformSession).GetTypeInfo().Assembly.Location)); } diff --git a/src/NServiceBus.Core.Tests/API/Infra/NServiceBusAssembly.cs b/src/NServiceBus.Core.Tests/API/Infra/NServiceBusAssembly.cs index c286a6d921..867f9a7c12 100644 --- a/src/NServiceBus.Core.Tests/API/Infra/NServiceBusAssembly.cs +++ b/src/NServiceBus.Core.Tests/API/Infra/NServiceBusAssembly.cs @@ -6,7 +6,7 @@ static class NServiceBusAssembly { - public static readonly List Types = typeof(IMessage).Assembly.GetTypes() + public static readonly List Types = typeof(EndpointConfiguration).Assembly.GetTypes() .Where(type => !type.IsObsolete()) .ToList(); } diff --git a/src/NServiceBus.Core.Tests/API/NullableAnnotations.cs b/src/NServiceBus.Core.Tests/API/NullableAnnotations.cs index d3b0755388..000c88e5e8 100644 --- a/src/NServiceBus.Core.Tests/API/NullableAnnotations.cs +++ b/src/NServiceBus.Core.Tests/API/NullableAnnotations.cs @@ -52,7 +52,7 @@ bool HasNonAnnotatedMember(Type type) { foreach (var member in type.GetMembers()) { - if (member.DeclaringType.Assembly != typeof(IMessage).Assembly) + if (member.DeclaringType.Assembly != typeof(EndpointConfiguration).Assembly) { continue; } diff --git a/src/NServiceBus.Core.Tests/ApprovalFiles/APIApprovals.ApproveNServiceBus.approved.txt b/src/NServiceBus.Core.Tests/ApprovalFiles/APIApprovals.ApproveNServiceBus.approved.txt index 12bd14ee08..cd90ea1714 100644 --- a/src/NServiceBus.Core.Tests/ApprovalFiles/APIApprovals.ApproveNServiceBus.approved.txt +++ b/src/NServiceBus.Core.Tests/ApprovalFiles/APIApprovals.ApproveNServiceBus.approved.txt @@ -476,7 +476,6 @@ namespace NServiceBus { System.Threading.CancellationToken CancellationToken { get; } } - public interface ICommand : NServiceBus.IMessage { } public interface IConfigureHowToFindSagaWithMessage { void ConfigureMapping(System.Linq.Expressions.Expression> sagaEntityProperty, System.Linq.Expressions.Expression> messageProperty) @@ -517,7 +516,6 @@ namespace NServiceBus { System.Threading.Tasks.Task Stop(System.Threading.CancellationToken cancellationToken = default); } - public interface IEvent : NServiceBus.IMessage { } public interface IHandleMessages { System.Threading.Tasks.Task Handle(T message, NServiceBus.IMessageHandlerContext context); @@ -526,7 +524,6 @@ namespace NServiceBus { System.Threading.Tasks.Task Timeout(T state, NServiceBus.IMessageHandlerContext context); } - public interface IMessage { } public interface IMessageConvention { string Name { get; } diff --git a/src/NServiceBus.Core.Tests/RedirectHelper.cs b/src/NServiceBus.Core.Tests/RedirectHelper.cs index fd726c0dc6..76f16781c1 100644 --- a/src/NServiceBus.Core.Tests/RedirectHelper.cs +++ b/src/NServiceBus.Core.Tests/RedirectHelper.cs @@ -17,7 +17,7 @@ static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs ar { if (args.Name.StartsWith("NServiceBus.Core,")) { - return typeof(IMessage).Assembly; + return typeof(EndpointConfiguration).Assembly; } return null; } diff --git a/src/NServiceBus.Core/ICommand.cs b/src/NServiceBus.Core/ICommand.cs index 893545427b..af739dd156 100644 --- a/src/NServiceBus.Core/ICommand.cs +++ b/src/NServiceBus.Core/ICommand.cs @@ -1,9 +1,4 @@ -namespace NServiceBus -{ - /// - /// Marker interface to indicate that a class is a command message. - /// - public interface ICommand : IMessage - { - } -} \ No newline at end of file +using System.Runtime.CompilerServices; +using NServiceBus; + +[assembly: TypeForwardedTo(typeof(ICommand))] \ No newline at end of file diff --git a/src/NServiceBus.Core/IEvent.cs b/src/NServiceBus.Core/IEvent.cs index a91c801b90..1e167cb292 100644 --- a/src/NServiceBus.Core/IEvent.cs +++ b/src/NServiceBus.Core/IEvent.cs @@ -1,9 +1,4 @@ -namespace NServiceBus -{ - /// - /// Marker interface to indicate that a class is a event message. - /// - public interface IEvent : IMessage - { - } -} \ No newline at end of file +using System.Runtime.CompilerServices; +using NServiceBus; + +[assembly: TypeForwardedTo(typeof(IEvent))] \ No newline at end of file diff --git a/src/NServiceBus.Core/IMessage.cs b/src/NServiceBus.Core/IMessage.cs index 8f1e1a7aa0..850f4773f6 100644 --- a/src/NServiceBus.Core/IMessage.cs +++ b/src/NServiceBus.Core/IMessage.cs @@ -1,10 +1,4 @@ -namespace NServiceBus -{ - /// - /// Marker interface to indicate that a class is a message suitable - /// for transmission and handling by an NServiceBus. - /// - public interface IMessage - { - } -} \ No newline at end of file +using System.Runtime.CompilerServices; +using NServiceBus; + +[assembly: TypeForwardedTo(typeof(IMessage))] \ No newline at end of file diff --git a/src/NServiceBus.Core/NServiceBus.Core.csproj b/src/NServiceBus.Core/NServiceBus.Core.csproj index da33480763..fd70f9ce02 100644 --- a/src/NServiceBus.Core/NServiceBus.Core.csproj +++ b/src/NServiceBus.Core/NServiceBus.Core.csproj @@ -21,6 +21,8 @@ + + diff --git a/src/NServiceBus.MessageAbstractions/ICommand.cs b/src/NServiceBus.MessageAbstractions/ICommand.cs new file mode 100644 index 0000000000..893545427b --- /dev/null +++ b/src/NServiceBus.MessageAbstractions/ICommand.cs @@ -0,0 +1,9 @@ +namespace NServiceBus +{ + /// + /// Marker interface to indicate that a class is a command message. + /// + public interface ICommand : IMessage + { + } +} \ No newline at end of file diff --git a/src/NServiceBus.MessageAbstractions/IEvent.cs b/src/NServiceBus.MessageAbstractions/IEvent.cs new file mode 100644 index 0000000000..a91c801b90 --- /dev/null +++ b/src/NServiceBus.MessageAbstractions/IEvent.cs @@ -0,0 +1,9 @@ +namespace NServiceBus +{ + /// + /// Marker interface to indicate that a class is a event message. + /// + public interface IEvent : IMessage + { + } +} \ No newline at end of file diff --git a/src/NServiceBus.MessageAbstractions/IMessage.cs b/src/NServiceBus.MessageAbstractions/IMessage.cs new file mode 100644 index 0000000000..8f1e1a7aa0 --- /dev/null +++ b/src/NServiceBus.MessageAbstractions/IMessage.cs @@ -0,0 +1,10 @@ +namespace NServiceBus +{ + /// + /// Marker interface to indicate that a class is a message suitable + /// for transmission and handling by an NServiceBus. + /// + public interface IMessage + { + } +} \ No newline at end of file diff --git a/src/NServiceBus.MessageAbstractions/NServiceBus.MessageAbstractions.csproj b/src/NServiceBus.MessageAbstractions/NServiceBus.MessageAbstractions.csproj new file mode 100644 index 0000000000..edd49243f7 --- /dev/null +++ b/src/NServiceBus.MessageAbstractions/NServiceBus.MessageAbstractions.csproj @@ -0,0 +1,13 @@ + + + + netstandard2.0 + true + ..\NServiceBus.snk + + + + + + + diff --git a/src/NServiceBus.TransportTests/NServiceBusTransportTest.cs b/src/NServiceBus.TransportTests/NServiceBusTransportTest.cs index ee7afdb36e..c06f409fee 100644 --- a/src/NServiceBus.TransportTests/NServiceBusTransportTest.cs +++ b/src/NServiceBus.TransportTests/NServiceBusTransportTest.cs @@ -39,7 +39,7 @@ protected static IConfigureTransportInfrastructure CreateConfigurer() if (string.IsNullOrWhiteSpace(transportToUse)) { - var coreAssembly = typeof(IMessage).Assembly; + var coreAssembly = typeof(EndpointConfiguration).Assembly; var nonCoreTransport = transportDefinitions.Value.FirstOrDefault(t => t.Assembly != coreAssembly); diff --git a/src/NServiceBus.sln b/src/NServiceBus.sln index 70332477f7..eb1b7c43ea 100644 --- a/src/NServiceBus.sln +++ b/src/NServiceBus.sln @@ -40,6 +40,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NServiceBus.Learning.Accept EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NServiceBus.Core.Analyzer.Tests.Roslyn4", "NServiceBus.Core.Analyzer.Tests.Roslyn4\NServiceBus.Core.Analyzer.Tests.Roslyn4.csproj", "{71330321-DA6D-4199-89C4-FB36F92E77C2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NServiceBus.MessageAbstractions", "NServiceBus.MessageAbstractions\NServiceBus.MessageAbstractions.csproj", "{9BF4758C-DC80-4D91-87DA-623B8FA20CAA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -94,6 +96,10 @@ Global {71330321-DA6D-4199-89C4-FB36F92E77C2}.Debug|Any CPU.Build.0 = Debug|Any CPU {71330321-DA6D-4199-89C4-FB36F92E77C2}.Release|Any CPU.ActiveCfg = Release|Any CPU {71330321-DA6D-4199-89C4-FB36F92E77C2}.Release|Any CPU.Build.0 = Release|Any CPU + {9BF4758C-DC80-4D91-87DA-623B8FA20CAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9BF4758C-DC80-4D91-87DA-623B8FA20CAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9BF4758C-DC80-4D91-87DA-623B8FA20CAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9BF4758C-DC80-4D91-87DA-623B8FA20CAA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE