Skip to content

Commit 27034d5

Browse files
authored
Merge pull request #244 from bormgruppe/contact-constructor-ambiguous-call-from-clr
Named constructors for QRCoder.PayloadGenerator.SwissQrCode.Contact
2 parents 60217f8 + 31f1174 commit 27034d5

File tree

2 files changed

+33
-22
lines changed

2 files changed

+33
-22
lines changed

QRCoder/PayloadGenerator.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,7 @@ public class Contact
903903
/// <param name="country">Two-letter country code as defined in ISO 3166-1</param>
904904
/// <param name="street">Streetname without house number</param>
905905
/// <param name="houseNumber">House number</param>
906+
[Obsolete("This constructor is deprecated. Use WithStructuredAddress instead.")]
906907
public Contact(string name, string zipCode, string city, string country, string street = null, string houseNumber = null) : this (name, zipCode, city, country, street, houseNumber, AddressType.StructuredAddress)
907908
{
908909
}
@@ -915,10 +916,20 @@ public Contact(string name, string zipCode, string city, string country, string
915916
/// <param name="country">Two-letter country code as defined in ISO 3166-1</param>
916917
/// <param name="addressLine1">Adress line 1</param>
917918
/// <param name="addressLine2">Adress line 2</param>
919+
[Obsolete("This constructor is deprecated. Use WithCombinedAddress instead.")]
918920
public Contact(string name, string country, string addressLine1, string addressLine2) : this(name, null, null, country, addressLine1, addressLine2, AddressType.CombinedAddress)
919921
{
920922
}
921923

924+
public static Contact WithStructuredAddress(string name, string zipCode, string city, string country, string street = null, string houseNumber = null)
925+
{
926+
return new Contact(name, zipCode, city, country, street, houseNumber, AddressType.StructuredAddress);
927+
}
928+
929+
public static Contact WithCombinedAddress(string name, string country, string addressLine1, string addressLine2)
930+
{
931+
return new Contact(name, null, null, country, addressLine1, addressLine2, AddressType.CombinedAddress);
932+
}
922933

923934

924935
private Contact(string name, string zipCode, string city, string country, string streetOrAddressline1, string houseNumberOrAddressline2, AddressType addressType)

QRCoderTests/PayloadGeneratorTests.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2004,7 +2004,7 @@ public void swissqrcode_generator_should_generate_contact_simple()
20042004
var city = "Bern";
20052005
var country = "CH";
20062006

2007-
var generator = new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, null, null);
2007+
var generator = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, null, null);
20082008

20092009
generator
20102010
.ToString()
@@ -2022,7 +2022,7 @@ public void swissqrcode_generator_should_generate_contact_full()
20222022
var street = "Parlamentsgebäude";
20232023
var houseNumber = "1";
20242024

2025-
var generator = new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber);
2025+
var generator = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber);
20262026

20272027
generator
20282028
.ToString()
@@ -2041,7 +2041,7 @@ public void swissqrcode_generator_should_throw_name_empty()
20412041
var street = "Parlamentsgebäude";
20422042
var houseNumber = "1";
20432043

2044-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2044+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
20452045

20462046
Assert.NotNull(exception);
20472047
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2060,7 +2060,7 @@ public void swissqrcode_generator_should_throw_name_too_long()
20602060
var street = "Parlamentsgebäude";
20612061
var houseNumber = "1";
20622062

2063-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2063+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
20642064

20652065
Assert.NotNull(exception);
20662066
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2079,7 +2079,7 @@ public void swissqrcode_generator_should_throw_street_too_long()
20792079
var street = "Parlamentsgebäude in der wunderschönen aber auch ziemlich teuren Stadt Bern in der Schweiz";
20802080
var houseNumber = "1";
20812081

2082-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2082+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
20832083

20842084
Assert.NotNull(exception);
20852085
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2098,7 +2098,7 @@ public void swissqrcode_generator_should_throw_street_with_illegal_char()
20982098
var street = "Parlamentsgebäude 1 ♥";
20992099
var houseNumber = "1";
21002100

2101-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2101+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
21022102

21032103
Assert.NotNull(exception);
21042104
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2117,7 +2117,7 @@ public void swissqrcode_generator_should_throw_housenumber_too_long()
21172117
var street = "Parlamentsgebäude";
21182118
var houseNumber = "123456789123456789";
21192119

2120-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2120+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
21212121

21222122
Assert.NotNull(exception);
21232123
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2136,7 +2136,7 @@ public void swissqrcode_generator_should_throw_zip_empty()
21362136
var street = "Parlamentsgebäude";
21372137
var houseNumber = "1";
21382138

2139-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2139+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
21402140

21412141
Assert.NotNull(exception);
21422142
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2154,7 +2154,7 @@ public void swissqrcode_generator_should_throw_zip_too_long()
21542154
var street = "Parlamentsgebäude";
21552155
var houseNumber = "1";
21562156

2157-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2157+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
21582158

21592159
Assert.NotNull(exception);
21602160
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2173,7 +2173,7 @@ public void swissqrcode_generator_should_throw_zip_has_illegal_char()
21732173
var street = "Parlamentsgebäude";
21742174
var houseNumber = "1";
21752175

2176-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2176+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
21772177

21782178
Assert.NotNull(exception);
21792179
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2192,7 +2192,7 @@ public void swissqrcode_generator_should_throw_city_empty()
21922192
var street = "Parlamentsgebäude";
21932193
var houseNumber = "1";
21942194

2195-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2195+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
21962196

21972197
Assert.NotNull(exception);
21982198
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2211,7 +2211,7 @@ public void swissqrcode_generator_should_throw_city_too_long()
22112211
var street = "Parlamentsgebäude";
22122212
var houseNumber = "1";
22132213

2214-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2214+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
22152215

22162216
Assert.NotNull(exception);
22172217
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2230,7 +2230,7 @@ public void swissqrcode_generator_should_throw_wrong_countrycode()
22302230
var street = "Parlamentsgebäude";
22312231
var houseNumber = "1";
22322232

2233-
var exception = Record.Exception(() => new PayloadGenerator.SwissQrCode.Contact(name, zip, city, country, street, houseNumber));
2233+
var exception = Record.Exception(() => PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress(name, zip, city, country, street, houseNumber));
22342234

22352235
Assert.NotNull(exception);
22362236
Assert.IsType<PayloadGenerator.SwissQrCode.Contact.SwissQrCodeContactException>(exception);
@@ -2243,7 +2243,7 @@ public void swissqrcode_generator_should_throw_wrong_countrycode()
22432243
[Category("PayloadGenerator/SwissQrCode")]
22442244
public void swissqrcode_generator_should_generate_swisscode_simple()
22452245
{
2246-
var creditor = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2246+
var creditor = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
22472247
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2430043000000789012", PayloadGenerator.SwissQrCode.Iban.IbanType.QrIban);
22482248
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.QRR, "990005000000000320071012303", ReferenceTextType.QrReference);
22492249
var currency = PayloadGenerator.SwissQrCode.Currency.EUR;
@@ -2259,7 +2259,7 @@ public void swissqrcode_generator_should_generate_swisscode_simple()
22592259
[Category("PayloadGenerator/SwissQrCode")]
22602260
public void swissqrcode_generator_should_generate_swisscode_full()
22612261
{
2262-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2262+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
22632263
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2430043000000789012", PayloadGenerator.SwissQrCode.Iban.IbanType.QrIban);
22642264
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.QRR, "990005000000000320071012303", ReferenceTextType.QrReference);
22652265
var currency = PayloadGenerator.SwissQrCode.Currency.CHF;
@@ -2279,7 +2279,7 @@ public void swissqrcode_generator_should_generate_swisscode_full()
22792279
[Category("PayloadGenerator/SwissQrCode")]
22802280
public void swissqrcode_generator_should_generate_clean_end_linebreaks()
22812281
{
2282-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2282+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
22832283
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2430043000000789012", PayloadGenerator.SwissQrCode.Iban.IbanType.QrIban);
22842284
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.QRR, "990005000000000320071012303", ReferenceTextType.QrReference);
22852285
var currency = PayloadGenerator.SwissQrCode.Currency.CHF;
@@ -2299,7 +2299,7 @@ public void swissqrcode_generator_should_generate_clean_end_linebreaks()
22992299
[Category("PayloadGenerator/SwissQrCode")]
23002300
public void swissqrcode_generator_should_generate_swisscode_full_alt()
23012301
{
2302-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2302+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
23032303
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2430043000000789012", PayloadGenerator.SwissQrCode.Iban.IbanType.QrIban);
23042304
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.QRR, "990005000000000320071012303", ReferenceTextType.QrReference);
23052305
var currency = PayloadGenerator.SwissQrCode.Currency.CHF;
@@ -2318,7 +2318,7 @@ public void swissqrcode_generator_should_generate_swisscode_full_alt()
23182318
[Category("PayloadGenerator/SwissQrCode")]
23192319
public void swissqrcode_generator_should_not_generate_space_as_thousands_separator()
23202320
{
2321-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2321+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
23222322
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2609000000857666015", PayloadGenerator.SwissQrCode.Iban.IbanType.Iban);
23232323
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.SCOR, "99000500000000032003", ReferenceTextType.CreditorReferenceIso11649);
23242324
var currency = PayloadGenerator.SwissQrCode.Currency.CHF;
@@ -2337,7 +2337,7 @@ public void swissqrcode_generator_should_not_generate_space_as_thousands_separat
23372337
[Category("PayloadGenerator/SwissQrCode")]
23382338
public void swissqrcode_generator_should_throw_amount_too_big()
23392339
{
2340-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2340+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
23412341
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2609000000857666015", PayloadGenerator.SwissQrCode.Iban.IbanType.Iban);
23422342
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.QRR, "990005000000000320071012303", ReferenceTextType.QrReference);
23432343
var additionalInformation = new PayloadGenerator.SwissQrCode.AdditionalInformation("This is my unstructured message.", "Some bill information here...");
@@ -2356,7 +2356,7 @@ public void swissqrcode_generator_should_throw_amount_too_big()
23562356
[Category("PayloadGenerator/SwissQrCode")]
23572357
public void swissqrcode_generator_should_throw_incompatible_reftype()
23582358
{
2359-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2359+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
23602360
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2430043000000789012", PayloadGenerator.SwissQrCode.Iban.IbanType.QrIban);
23612361
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.NON);
23622362
var additionalInformation = new PayloadGenerator.SwissQrCode.AdditionalInformation("This is my unstructured message.", "Some bill information here...");
@@ -2375,7 +2375,7 @@ public void swissqrcode_generator_should_throw_incompatible_reftype()
23752375
[Category("PayloadGenerator/SwissQrCode")]
23762376
public void swissqrcode_generator_should_throw_alt1_too_long()
23772377
{
2378-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2378+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
23792379
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2430043000000789012", PayloadGenerator.SwissQrCode.Iban.IbanType.QrIban);
23802380
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.QRR);
23812381
var additionalInformation = new PayloadGenerator.SwissQrCode.AdditionalInformation("This is my unstructured message.", "Some bill information here...");
@@ -2395,7 +2395,7 @@ public void swissqrcode_generator_should_throw_alt1_too_long()
23952395
[Category("PayloadGenerator/SwissQrCode")]
23962396
public void swissqrcode_generator_should_throw_alt2_too_long()
23972397
{
2398-
var contactGeneral = new PayloadGenerator.SwissQrCode.Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
2398+
var contactGeneral = PayloadGenerator.SwissQrCode.Contact.WithStructuredAddress("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
23992399
var iban = new PayloadGenerator.SwissQrCode.Iban("CH2430043000000789012", PayloadGenerator.SwissQrCode.Iban.IbanType.QrIban);
24002400
var reference = new PayloadGenerator.SwissQrCode.Reference(ReferenceType.QRR);
24012401
var additionalInformation = new PayloadGenerator.SwissQrCode.AdditionalInformation("This is my unstructured message.", "Some bill information here...");

0 commit comments

Comments
 (0)