{"id":1074,"date":"2017-03-26T21:12:22","date_gmt":"2017-03-26T20:12:22","guid":{"rendered":"http:\/\/piatkosia.k4be.pl\/wordpress\/?p=1074"},"modified":"2017-03-31T14:24:44","modified_gmt":"2017-03-31T13:24:44","slug":"generyki","status":"publish","type":"post","link":"https:\/\/piatkosia.k4be.pl\/wordpress\/2017\/03\/26\/generyki\/","title":{"rendered":"Mo\u017ce te generyki nie s\u0105 takie z\u0142e&#8230;"},"content":{"rendered":"<p style=\"text-align: justify;\">Tak, deklaracje typ\u00f3w mog\u0105 by\u0107 d\u0142ugie.<br \/>\nWe\u017amy sobie typ na przyk\u0142ad:<\/p>\n<pre class=\"brush: csharp; collapse: false\">public class ThreeGradeRa : RiskAssessment&ltThreeGradeRiskRowAssessmentModel&gt, IRiskAssessment\r\n<\/pre>\n<p style=\"text-align: justify;\"><!--more--><br \/>\nMamy tu po prostu generyka, kt\u00f3ry jest niczym innym jak headerem z list\u0105, przy czym jeszcze ma jaki\u015b interfejs. To jeszcze nic. Chcecie zobaczy\u0107 jaki potworek utworzy\u0142am dla RiskAssessment&#038;ltT&#038;gt? Tam to dopiero magia:p<\/p>\n<pre class=\"brush: csharp; collapse: false\">public class  RiskAssessment&ltT&gt : BindingList&ltT&gt where T : RiskAssessmentRowModel<\/pre>\n<p style=\"text-align: justify;\">Oczyw\u015bcie po dwukropku mo\u017cna poda\u0107 klas\u0119, mo\u017cna poda\u0107 interfejsy, mo\u017cna te\u017c poda\u0107 dziwne konstrukcje typu where T: struct \u2013 je\u015bli parametr ma by\u0107 value type (niekoniecznie struktur\u0105), albo T : class \u2013 je\u015bli parametr ma by\u0107 typu generycznego. Jest te\u017c taki tw\u00f3r jak where T : new() &#8211; czyli wymuszenie, \u017ce typ ma mie\u0107 konstruktor bezparametrowy. Mo\u017cna to \u0142\u0105czy\u0107, wystarczy wymieni\u0107 parametry jak cz\u0142owiek, po przecinku. where T : IDupable, new() chocia\u017cby.<br \/>\nA przy kilku parametrach (bo i tak si\u0119 da):<\/p>\n<pre class=\"brush: csharp; collapse: false\"> class DoubleBlasta&ltT, Tdwa&gt\r\n        where T : IComparable, IEnumerable, \r\n        where Tdwa: IWtfable, new()\r\n{co\u015btam}\r\n<\/pre>\n<p style=\"text-align: justify;\">Tak tylko dodam, \u017ce to new() musi by\u0107 na ko\u0144cu, acz na msdnie o tym nie ma. Albo ja\u00a0<a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/d5x73970.aspx#Constraining Multiple Parameters\" target=\"_blank\">tu nie widz\u0119.<\/a><\/p>\n<p style=\"text-align: justify;\">Tak czy owak, przesta\u0142am si\u0119 tych generyk\u00f3w ba\u0107;)<\/p>\n<p style=\"text-align: justify;\">Ok, mia\u0142o by\u0107 d\u0142u\u017cej i \u0142adniej, ale si\u0119 p\u00f3\u017ano zrobi\u0142o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tak, deklaracje typ\u00f3w mog\u0105 by\u0107 d\u0142ugie. We\u017amy sobie typ na przyk\u0142ad: public class ThreeGradeRa : RiskAssessment&#038;ltThreeGradeRiskRowAssessmentModel&#038;gt, IRiskAssessment<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,240,268,239],"tags":[277],"class_list":["post-1074","post","type-post","status-publish","format-standard","hentry","category-bez-kategorii","category-dajsiepoznac","category-dsp2017","category-konkursy","tag-generyki","entry"],"_links":{"self":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=1074"}],"version-history":[{"count":6,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1074\/revisions"}],"predecessor-version":[{"id":1080,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1074\/revisions\/1080"}],"wp:attachment":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=1074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=1074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=1074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}