The proper usage of a static factory method for creating a DTO object with predefined valuesCreating Extension Method to map entity with subentities object to Poco objectAbstract Factory ExperimentPassing a DTO into a static domain 'Create' methodProper usage of “using” statement in base64 encode methodCorrect usage of MVVM and object for methodModifying the response object for creating and downloading a documentLinked object for creating chains without listsClass with TryParse static methodWPF object model control with singleton and static messenger? ConditionalWeakTable?Using Autofac to do DI in a static factory method
How to prevent "they're falling in love" trope
How badly should I try to prevent a user from XSSing themselves?
What is a romance in Latin?
What method can I use to design a dungeon difficult enough that the PCs can't make it through without killing them?
Why no variance term in Bayesian logistic regression?
Why would the Red Woman birth a shadow if she worshipped the Lord of the Light?
Can we compute the area of a quadrilateral with one right angle when we only know the lengths of any three sides?
How do I handle a potential work/personal life conflict as the manager of one of my friends?
Can I run a new neutral wire to repair a broken circuit?
I would say: "You are another teacher", but she is a woman and I am a man
Extract rows of a table, that include less than x NULLs
What does the expression "A Mann!" means
Why didn't Boeing produce its own regional jet?
Why doesn't using multiple commands with a || or && conditional work?
GFCI outlets - can they be repaired? Are they really needed at the end of a circuit?
How seriously should I take size and weight limits of hand luggage?
What is the idiomatic way to say "clothing fits"?
Valid term from quadratic sequence?
Venezuelan girlfriend wants to travel the USA to be with me. What is the process?
Madden-Julian Oscillation (MJO) - How to interpret the index?
Mathematica command that allows it to read my intentions
Probability that a draw from a normal distribution is some number greater than another draw from the same distribution
Which is the best way to check return result?
Method Does Not Exist error message
The proper usage of a static factory method for creating a DTO object with predefined values
Creating Extension Method to map entity with subentities object to Poco objectAbstract Factory ExperimentPassing a DTO into a static domain 'Create' methodProper usage of “using” statement in base64 encode methodCorrect usage of MVVM and object for methodModifying the response object for creating and downloading a documentLinked object for creating chains without listsClass with TryParse static methodWPF object model control with singleton and static messenger? ConditionalWeakTable?Using Autofac to do DI in a static factory method
$begingroup$
Let's assume we have to create complex DTO object with some predefined (default) values. This object is used for serialization, and a serializer requires a parameterless constructor. To do so, I'd like to use a static factory method, but I have some doubts about the proper usage of this approach.
Please consider the following two examples:
public class Foo
public void DoSomething()
// the first way of creating the object
var addressDtoFirstWay = AddressDtoFirstWay
.CreateWithPredefinedValues();
addressDtoFirstWay.StreetName = "Street";
addressDtoFirstWay.HouseNumber = 100;
addressDtoFirstWay.PostalCode = "1000";
// the second way of creating the object
var addressDtoSecondWay = AddressDtoSecondWay
.CreateWithPredefinedValues("Street", 100, null, "1000");
public class AddressDtoFirstWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoFirstWay CreateWithPredefinedValues()
return new AddressDtoFirstWay
RecipientName = "John Doe",
City = "City",
CountryName = "Country"
;
public class AddressDtoSecondWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoSecondWay CreateWithPredefinedValues(
string streetName,
int houseNumber,
int? flatNumber,
string postalCode)
return new AddressDtoSecondWay
RecipientName = "John Doe",
StreetName = streetName,
HouseNumber = houseNumber,
FlatNumber = flatNumber,
PostalCode = postalCode,
City = "City",
CountryName = "Country"
;
In the first example, the factory method initializes only the predefined fields - a user has to initialize the rest of them after object creation. The second example initializes the predefined fields, also the fields which are required, but as a downside, a user has to fill nullable (not required in this case, but required in the other) field flatNumber.
I see both the advantages and disadvantages of these two solutions, but I'm considering which one is more preferred and why. Maybe some other approach will be even better. I'm open to any suggestions, but I want to notice, that the problem it's not that complex that the builder pattern will be applicable.
c#
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
add a comment |
$begingroup$
Let's assume we have to create complex DTO object with some predefined (default) values. This object is used for serialization, and a serializer requires a parameterless constructor. To do so, I'd like to use a static factory method, but I have some doubts about the proper usage of this approach.
Please consider the following two examples:
public class Foo
public void DoSomething()
// the first way of creating the object
var addressDtoFirstWay = AddressDtoFirstWay
.CreateWithPredefinedValues();
addressDtoFirstWay.StreetName = "Street";
addressDtoFirstWay.HouseNumber = 100;
addressDtoFirstWay.PostalCode = "1000";
// the second way of creating the object
var addressDtoSecondWay = AddressDtoSecondWay
.CreateWithPredefinedValues("Street", 100, null, "1000");
public class AddressDtoFirstWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoFirstWay CreateWithPredefinedValues()
return new AddressDtoFirstWay
RecipientName = "John Doe",
City = "City",
CountryName = "Country"
;
public class AddressDtoSecondWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoSecondWay CreateWithPredefinedValues(
string streetName,
int houseNumber,
int? flatNumber,
string postalCode)
return new AddressDtoSecondWay
RecipientName = "John Doe",
StreetName = streetName,
HouseNumber = houseNumber,
FlatNumber = flatNumber,
PostalCode = postalCode,
City = "City",
CountryName = "Country"
;
In the first example, the factory method initializes only the predefined fields - a user has to initialize the rest of them after object creation. The second example initializes the predefined fields, also the fields which are required, but as a downside, a user has to fill nullable (not required in this case, but required in the other) field flatNumber.
I see both the advantages and disadvantages of these two solutions, but I'm considering which one is more preferred and why. Maybe some other approach will be even better. I'm open to any suggestions, but I want to notice, that the problem it's not that complex that the builder pattern will be applicable.
c#
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
add a comment |
$begingroup$
Let's assume we have to create complex DTO object with some predefined (default) values. This object is used for serialization, and a serializer requires a parameterless constructor. To do so, I'd like to use a static factory method, but I have some doubts about the proper usage of this approach.
Please consider the following two examples:
public class Foo
public void DoSomething()
// the first way of creating the object
var addressDtoFirstWay = AddressDtoFirstWay
.CreateWithPredefinedValues();
addressDtoFirstWay.StreetName = "Street";
addressDtoFirstWay.HouseNumber = 100;
addressDtoFirstWay.PostalCode = "1000";
// the second way of creating the object
var addressDtoSecondWay = AddressDtoSecondWay
.CreateWithPredefinedValues("Street", 100, null, "1000");
public class AddressDtoFirstWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoFirstWay CreateWithPredefinedValues()
return new AddressDtoFirstWay
RecipientName = "John Doe",
City = "City",
CountryName = "Country"
;
public class AddressDtoSecondWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoSecondWay CreateWithPredefinedValues(
string streetName,
int houseNumber,
int? flatNumber,
string postalCode)
return new AddressDtoSecondWay
RecipientName = "John Doe",
StreetName = streetName,
HouseNumber = houseNumber,
FlatNumber = flatNumber,
PostalCode = postalCode,
City = "City",
CountryName = "Country"
;
In the first example, the factory method initializes only the predefined fields - a user has to initialize the rest of them after object creation. The second example initializes the predefined fields, also the fields which are required, but as a downside, a user has to fill nullable (not required in this case, but required in the other) field flatNumber.
I see both the advantages and disadvantages of these two solutions, but I'm considering which one is more preferred and why. Maybe some other approach will be even better. I'm open to any suggestions, but I want to notice, that the problem it's not that complex that the builder pattern will be applicable.
c#
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
$endgroup$
Let's assume we have to create complex DTO object with some predefined (default) values. This object is used for serialization, and a serializer requires a parameterless constructor. To do so, I'd like to use a static factory method, but I have some doubts about the proper usage of this approach.
Please consider the following two examples:
public class Foo
public void DoSomething()
// the first way of creating the object
var addressDtoFirstWay = AddressDtoFirstWay
.CreateWithPredefinedValues();
addressDtoFirstWay.StreetName = "Street";
addressDtoFirstWay.HouseNumber = 100;
addressDtoFirstWay.PostalCode = "1000";
// the second way of creating the object
var addressDtoSecondWay = AddressDtoSecondWay
.CreateWithPredefinedValues("Street", 100, null, "1000");
public class AddressDtoFirstWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoFirstWay CreateWithPredefinedValues()
return new AddressDtoFirstWay
RecipientName = "John Doe",
City = "City",
CountryName = "Country"
;
public class AddressDtoSecondWay
public string RecipientName get; set;
public string StreetName get; set;
public int HouseNumber get; set;
public int? FlatNumber get; set;
public string PostalCode get; set;
public string City get; set;
public string CountryName get; set;
public static AddressDtoSecondWay CreateWithPredefinedValues(
string streetName,
int houseNumber,
int? flatNumber,
string postalCode)
return new AddressDtoSecondWay
RecipientName = "John Doe",
StreetName = streetName,
HouseNumber = houseNumber,
FlatNumber = flatNumber,
PostalCode = postalCode,
City = "City",
CountryName = "Country"
;
In the first example, the factory method initializes only the predefined fields - a user has to initialize the rest of them after object creation. The second example initializes the predefined fields, also the fields which are required, but as a downside, a user has to fill nullable (not required in this case, but required in the other) field flatNumber.
I see both the advantages and disadvantages of these two solutions, but I'm considering which one is more preferred and why. Maybe some other approach will be even better. I'm open to any suggestions, but I want to notice, that the problem it's not that complex that the builder pattern will be applicable.
c#
c#
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 13 mins ago
rgbrgb
101
101
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
rgb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
rgb is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216818%2fthe-proper-usage-of-a-static-factory-method-for-creating-a-dto-object-with-prede%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
rgb is a new contributor. Be nice, and check out our Code of Conduct.
rgb is a new contributor. Be nice, and check out our Code of Conduct.
rgb is a new contributor. Be nice, and check out our Code of Conduct.
rgb is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216818%2fthe-proper-usage-of-a-static-factory-method-for-creating-a-dto-object-with-prede%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown