<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://www.schweda.net/style_feed.css" ?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:atom="http://www.w3.org/2005/Atom"	
	xmlns:dc="http://purl.org/dc/elements/1.1/" > 
<channel>
    <title>schweda.net - Blog</title>
    <link>https://www.schweda.net/</link>
    <description>schweda.net - Blog - Blog-Beitraege</description>
    <language>de-at</language>
    <copyright>Copyright 2006-2026</copyright>
    <generator>schweda.net</generator>
    <managingEditor>heinz.schweda@schweda.net (Heinz Schweda)</managingEditor>
    <webMaster>heinz.schweda@schweda.net (Heinz Schweda)</webMaster>
    <category>Blog</category>
	<atom:link href="https://schweda.net/blog_rss.php?bid=579" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Statt Parameter-Listen einen DataContract verwenden]]></title>
<description><![CDATA[
<p>Wer schon einmal die Parameter einer Methode erweitern musste, kennt vielleicht das Problem: Wenn man Gl&uuml;ck hat kann man seinen neuen Parameter am Ende einf&uuml;gen und mit einem Default-Wert vorbelegen.<br />
<br />
Hat man nicht ganz so viel Gl&uuml;ck und muss entweder der Parameter zwischen den vorhandenen einbauen oder darf/kann keinen Default-Wert angeben so muss man den gesamten AOT nach den Aufrufen dieser Methode durchsuchen (die Querverweise helfen hier enorm) und diese entsprechend anpassen.<br />
<br />
Aufgrund dieser Problematik gehe ich bei meinen Methoden nun oft den Weg, da&szlig; ich nur einen einzigen Parameter einf&uuml;ge, und zwar vom Typ einer - nennen wir sie einfach einmal DataContract-Klasse.<br />
<br />
DataContracts sind dem einen oder anderen vielleicht aus dem SSRS-Umfeld bekannt, aber die selbe Logik kann ich auch in vielen anderen Situationen anwenden.<br />
<br />
So sieht eine solche DataContract-Klasse beispielweise wie folgt aus:
</p>


<div class="div_blog_axcode">classDeclaration MyDataContract<br />
{<br />
&nbsp;&nbsp;&nbsp; ItemId itemId;<br />
&nbsp; &nbsp; Qty qty;<br />
}
</div>


<p>&nbsp;
</p>


<div class="div_blog_axcode">Public ItemId parmItemId(ItemId _itemId = itemId)<br />
{<br />
&nbsp;&nbsp;&nbsp; itemId = _itemId;<br />
&nbsp;&nbsp;&nbsp; return itemId;<br />
}
</div>


<p>&nbsp;
</p>


<div class="div_blog_axcode">Public Qty parmQty(Qty _qty = qty)<br />
{<br />
&nbsp;&nbsp;&nbsp; qty = _qty;<br />
&nbsp;&nbsp;&nbsp; return qty;<br />
}
</div>


<p><br />
Eine Methode k&ouml;nnte dann wie folgt aussehen:
</p>


<div class="div_blog_axcode">Public void myMethod(MyDataContract _dataContract)<br />
{<br />
&nbsp;&nbsp;&nbsp; // &hellip; do something&hellip;<br />
&nbsp;&nbsp;&nbsp; info(_dataContract.parmItemId());<br />
}
</div>


<p><br />
Aufrufen muss ich eine solche Methode so:
</p>


<div class="div_blog_axcode">MyDataContract dataContract;<br />
dataContract = new MyDataContract();<br />
dataContract.parmItemId(&quot;A1000&quot;);<br />
dataContract.parmQty(123);<br />
<br />
Object.myMethod(dataContract);
</div>


<p><br />
Kommt nun sp&auml;ter ein neuer Parameter hinzu, muss ich den lediglich entsprechend in der DataContract-Klasse einf&uuml;gen und die Logik in der Methode erweitern. Die Methodenaufrufe k&ouml;nnen u.U. so bleiben wie sie waren, lediglich die Aufrufe wo die ge&auml;nderten Parameter ber&uuml;cksichtigt werden m&uuml;ssen, m&uuml;ssen angepasst werden.<br />
<br />
Und zu guter Letzt kann ich solche DataContract-Klassen nat&uuml;rlich f&uuml;r mehrere Methoden verwenden.<br />
&nbsp;
</p>


<p>&nbsp;
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Tue, 14 Jul 2015 14:57:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=579</link>
<comments>https://www.schweda.net/blog_ax.php?bid=579</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=579</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=579</wfw:commentRss>
</item>
</channel>
</rss>	
