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













0












$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.










share|improve this question







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$
















    0












    $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.










    share|improve this question







    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$














      0












      0








      0





      $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.










      share|improve this question







      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#






      share|improve this question







      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.











      share|improve this question







      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.









      share|improve this question




      share|improve this question






      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.




















          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.









          draft saved

          draft discarded


















          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.









          draft saved

          draft discarded


















          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          格濟夫卡 參考資料 导航菜单51°3′40″N 34°2′21″E / 51.06111°N 34.03917°E / 51.06111; 34.03917ГезівкаПогода в селі 编辑或修订