diff --git a/src/net/Qt.NetCore.Tests/Types/NetTypeManagerTests.cs b/src/net/Qt.NetCore.Tests/Types/NetTypeManagerTests.cs index 1a01bcbb..05cd919a 100644 --- a/src/net/Qt.NetCore.Tests/Types/NetTypeManagerTests.cs +++ b/src/net/Qt.NetCore.Tests/Types/NetTypeManagerTests.cs @@ -130,6 +130,25 @@ namespace Qt.NetCore.Tests.Types property.ParentType.ClassName.Should().Be("TestType6"); } + [Signal("testSignal", NetVariantType.DateTime, NetVariantType.Object)] + public class TestType7 + { + + } + + [Fact] + public void Can_get_signal() + { + var type = NetTypeManager.GetTypeInfo(); + + type.SignalCount.Should().Be(1); + var signal = type.GetSignal(0); + signal.Name.Should().Be("testSignal"); + signal.ParameterCount.Should().Be(2); + signal.GetParameter(0).Should().Be(NetVariantType.DateTime); + signal.GetParameter(1).Should().Be(NetVariantType.Object); + } + [Fact] public void Null_type_returned_for_invalid_type() { diff --git a/src/net/Qt.NetCore/Internal/DefaultCallbacks.cs b/src/net/Qt.NetCore/Internal/DefaultCallbacks.cs index 0186c67d..28dc0d35 100644 --- a/src/net/Qt.NetCore/Internal/DefaultCallbacks.cs +++ b/src/net/Qt.NetCore/Internal/DefaultCallbacks.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using Qt.NetCore.Qml; @@ -81,6 +82,18 @@ namespace Qt.NetCore.Internal type.AddProperty(property); } } + + foreach (var signalAttribute in typeInfo.GetCustomAttributes().OfType()) + { + using (var signal = new NetSignalInfo(signalAttribute.Name)) + { + foreach (var parameter in signalAttribute.Parameters) + { + signal.AddParameter(parameter); + } + type.AddSignal(signal); + } + } } } diff --git a/src/net/Qt.NetCore/SignalAttribute.cs b/src/net/Qt.NetCore/SignalAttribute.cs new file mode 100644 index 00000000..aa1893a2 --- /dev/null +++ b/src/net/Qt.NetCore/SignalAttribute.cs @@ -0,0 +1,18 @@ +using System; + +namespace Qt.NetCore +{ + public class SignalAttribute : Attribute + { + public SignalAttribute(string name, params NetVariantType[] parameters) + { + Name = name; + Parameters = parameters; + } + + + public string Name { get; } + + public NetVariantType[] Parameters { get; } + } +} \ No newline at end of file