Skip to content

Commit d3385a1

Browse files
author
Jacques Kang
committed
support implicitly converting input parameters from derived type to base type
1 parent e297f0c commit d3385a1

File tree

5 files changed

+32
-10
lines changed

5 files changed

+32
-10
lines changed

src/JKang.IpcServiceFramework.Client/JKang.IpcServiceFramework.Client.csproj

+4-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
<RepositoryUrl>https://github.com/jacqueskang/IpcServiceFramework</RepositoryUrl>
1212
<PackageTags>dotnetcore,named-pipes,interprocess-communication</PackageTags>
1313
<PackageProjectUrl>https://github.com/jacqueskang/IpcServiceFramework</PackageProjectUrl>
14-
<PackageReleaseNotes>1.0.1
14+
<PackageReleaseNotes>1.0.2
15+
- support implicitly converting input parameters from derived type to base type
16+
1.0.1
1517
- support passing array parameters</PackageReleaseNotes>
16-
<Version>1.0.1</Version>
18+
<Version>1.0.2</Version>
1719
</PropertyGroup>
1820

1921
<ItemGroup>

src/JKang.IpcServiceFramework.Core.Tests/DefaultValueConverterTest.cs

+16-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,22 @@ public void TryConvert_ComplexTypeArray()
131131
}
132132
}
133133

134-
class ComplexType
134+
[TestMethod]
135+
public void TryConvert_DerivedTypeToBaseType()
136+
{
137+
bool succeed = _sut.TryConvert(new ComplexType(), typeof(IComplexType), out object actual);
138+
139+
Assert.IsTrue(succeed);
140+
Assert.IsInstanceOfType(actual, typeof(ComplexType));
141+
}
142+
143+
interface IComplexType
144+
{
145+
int Int32Value { get; }
146+
string StringValue { get; }
147+
}
148+
149+
class ComplexType : IComplexType
135150
{
136151
public int Int32Value { get; set; }
137152
public string StringValue { get; set; }

src/JKang.IpcServiceFramework.Core/JKang.IpcServiceFramework.Core.csproj

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
<RepositoryUrl>https://github.com/jacqueskang/IpcServiceFramework</RepositoryUrl>
1313
<PackageTags>dotnetcore,named-pipes,interprocess-communication</PackageTags>
1414
<PackageProjectUrl>https://github.com/jacqueskang/IpcServiceFramework</PackageProjectUrl>
15-
<PackageReleaseNotes>1.0.1
15+
<PackageReleaseNotes>1.0.2
16+
- support implicitly converting input parameters from derived type to base type
17+
1.0.1
1618
- support passing array parameters</PackageReleaseNotes>
17-
<Version>1.0.1</Version>
19+
<Version>1.0.2</Version>
1820
</PropertyGroup>
1921

2022
<ItemGroup>

src/JKang.IpcServiceFramework.Core/Services/DefaultValueConverter.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ public class DefaultValueConverter : IValueConverter
77
{
88
public bool TryConvert(object origValue, Type destType, out object destValue)
99
{
10-
if (origValue.GetType() == destType)
10+
if (destType.IsAssignableFrom(origValue.GetType()))
1111
{
12-
// copy value directly if type matches
12+
// copy value directly if it can be assigned to destType
1313
destValue = origValue;
1414
return true;
1515
}

src/JKang.IpcServiceFramework.Server/JKang.IpcServiceFramework.Server.csproj

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
@@ -14,9 +14,12 @@ This package is for server hosting.</Description>
1414
<PackageProjectUrl>https://github.com/jacqueskang/IpcServiceFramework</PackageProjectUrl>
1515
<RepositoryUrl>https://github.com/jacqueskang/IpcServiceFramework</RepositoryUrl>
1616
<PackageTags>dotnetcore,named-pipes,interprocess-communication</PackageTags>
17-
<Version>1.0.1</Version>
18-
<PackageReleaseNotes>1.0.1
17+
<Version>1.0.2</Version>
18+
<PackageReleaseNotes>1.0.2
19+
- support implicitly converting input parameters from derived type to base type
20+
1.0.1
1921
- support passing array parameters</PackageReleaseNotes>
22+
<AssemblyVersion>1.0.2.0</AssemblyVersion>
2023
</PropertyGroup>
2124

2225
<ItemGroup>

0 commit comments

Comments
 (0)