<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET und PDF Software</title>
	<atom:link href="http://blog.topdf.de/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.topdf.de</link>
	<description>.NET Softwareentwicklung &#38; alles rund um WordToPDF</description>
	<lastBuildDate>Sun, 27 Jan 2013 18:38:25 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Von Mozilla Thunderbird nach Office365 wechseln, Teil 3</title>
		<link>http://blog.topdf.de/?p=534</link>
		<comments>http://blog.topdf.de/?p=534#comments</comments>
		<pubDate>Sat, 26 Jan 2013 20:03:59 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Office365]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=534</guid>
		<description><![CDATA[Nachdem ich in den letzten beiden Teilen bereits von den Problemen bei der Migration von Mozilla Thunderbird nach Office365 berichtet haben, konnte ich nun einen Durchbruch erzielen. Dazu habe ich einen alten virtuellen PC genutzt, in dem noch Office 2003 installiert war (Office 2013 funktioniert im Moment im ersten Schritt noch nicht!). Dort habe ich [...]]]></description>
				<content:encoded><![CDATA[<p>Nachdem ich in den <a href="http://blog.topdf.de/?p=513">letzten</a> <a href="http://blog.topdf.de/?p=519">beiden</a> Teilen bereits von den Problemen bei der Migration von Mozilla Thunderbird nach Office365 berichtet haben, konnte ich nun einen Durchbruch erzielen. Dazu habe ich einen alten virtuellen PC genutzt, in dem noch Office 2003 installiert war (Office 2013 funktioniert im Moment im ersten Schritt noch nicht!). Dort habe ich <a href="http://www.mailstore.com/de/mailstore-home.aspx">MailStore Home</a> installiert. Diese Software ist eigentlich dazu da, Emailprogramme zu sichern und bei Bedarf auch wiederherzustellen. Ich habe als ein MailStore-Backup von Thunderbird (diese Software lässt sich problemlos auf einem USB-Stick betreiben) in den alten Rechner mit Outlook 2003 übertragen. Danach war nur noch die pst-Datei in mein reales Outlook 2013 zu übertragen und Outlook mit Office365 zu verbinden. Office365 läuft für Outlook wie ein Exchange und auch die Übertragung großer Ordnerstrukturen ist so kein Problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=534</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Von Mozilla Thunderbird nach Office365 wechseln, Teil 2</title>
		<link>http://blog.topdf.de/?p=519</link>
		<comments>http://blog.topdf.de/?p=519#comments</comments>
		<pubDate>Sun, 06 Jan 2013 11:29:08 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Office365]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=519</guid>
		<description><![CDATA[Wie ich im letzten Beitrag bereits geschrieben habe, versuche ich gerade meine Emails in die Office365 Cloud umzuziehen. Leider ist die Thunderbird-IMAP-Schnittstelle zur Office365-IMAP-Schnittstelle nur bedingt kompatibel. Konkret äußert sich das so: Problem 1: Kopiert man einen Ordner, der Unterordner enthält, in Richtung Office365, so wird erst der Hauptordner ordentlich angelegt, dann werden dessen Emails [...]]]></description>
				<content:encoded><![CDATA[<p>Wie ich im <a href="http://blog.topdf.de/?p=513">letzten Beitrag</a> bereits geschrieben habe, versuche ich gerade meine Emails in die <a href="http://de.wikipedia.org/wiki/Office_365">Office365</a> Cloud umzuziehen. Leider ist die Thunderbird-IMAP-Schnittstelle zur Office365-IMAP-Schnittstelle nur bedingt kompatibel. Konkret äußert sich das so:</p>
<p><strong>Problem 1:</strong> Kopiert man einen Ordner, der Unterordner enthält, in Richtung Office365, so wird erst der Hauptordner ordentlich angelegt, dann werden dessen Emails übertragen. Der erste Unterordner wird ebenfalls angelegt. Danach erfolgt leider ein Abbruch mit der Servermeldung, dass der Ordner in Office365 nicht vorhanden sei. Im Nachgang lassen sich die Dateien aber problemlos in den Ordner kopieren. Im Endeffekt bedeutet das aber, dass ich alle Ordner einzeln transferieren muss.</p>
<p><strong>Problem 2:</strong> Enthält ein Ordner Zeichen wie beispielsweise einen Slash: &#8220;12/2012&#8243;, so hat man ein echtes Problem: In Office365 wird nur der Ordner 12 angelegt und unterhalb der Ordner 2012 angezeigt. Scheinbar wird der Slash als Trennzeichen gewertet. Auf dem Server landet also erst einmal nur die 12. Löschen lässt sich der Ordner nicht mehr, es kommt ein Fehler. Die einzige Hilfe ist hier, den <strong>übergeordneten (!)</strong> Ordner zu löschen, was aber auch nur geht, wenn der Papierkorb nicht bereits vom ersten Versuch einen gleichnamigen Ordner enthält.</p>
<p><strong>Zwischenstand:</strong> Ich werde den Transfer direkt mit Mozilla Thunderbird erst einmal abbrechen. Wenn ich jeden Ordner einzeln übertragen muss, werde ich noch Wochen beschäftigt sein, da man mit einer weiteren Aktion immer erst den Abschluss der vorangegangenen Aktion abwarten muss. Wenn ich an die vielfältigen Email-Konfigurationen von Kunden denke, würde ich momentan sicher erst einmal vor einem Wechsel in Office365 warnen, wenn man keinen <strong>erprobten</strong> Migrationspfad hat. Vielleicht ist ja aber auch Outlook wirklich das Mittel der Wahl. Ich werde meinen Test darum darauf verlagern.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=519</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Von Mozilla Thunderbird nach Office365 wechseln</title>
		<link>http://blog.topdf.de/?p=513</link>
		<comments>http://blog.topdf.de/?p=513#comments</comments>
		<pubDate>Fri, 28 Dec 2012 20:16:20 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Office365]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=513</guid>
		<description><![CDATA[Eigentlich ist es ja schön: Ich habe viele mobile Geräte und kann überall meine Emails abrufen, nur liegen die meisten lokal auf dem Rechner. Das möchte ich gern ändern und mache darum gerade einen Test mit Office 365. Vom Prinzip her stellt das kleine Paket einen IMAP-Webspace von 25GB zur Verfügung und ermöglicht mir (und [...]]]></description>
				<content:encoded><![CDATA[<p>Eigentlich ist es ja schön: Ich habe viele mobile Geräte und kann überall meine Emails abrufen, nur liegen die meisten lokal auf dem Rechner. Das möchte ich gern ändern und mache darum gerade einen Test mit <a href="http://www.microsoft.com/de-de/office365/resources/default.aspx">Office 365</a>.</p>
<p>Vom Prinzip her stellt das kleine Paket einen IMAP-Webspace von 25GB zur Verfügung und ermöglicht mir (und hier unterscheidet es sich deutlich von Mitbewerbern), mit Outlook Web Access bequem darauf zuzugreifen. Je nach Paket ist auch noch ein Office-Speicherplatz dabei. Der Komfort einer solchen Lösung ist hoch und meine Endgeräte, im speziellen das WindowsPhone sollten davon profitieren.</p>
<p>Leider steht da noch die Frage im Raum: was mache ich mit meinen lokalen Mails in Thunderbird. Ich habe einige Lösungen gefunden, die alle grob wie folgt gingen: <em>Nutze ein Tool und exportiere oder archiviere Thunderbird. Importiere alles in Outlook und schiebe es dann in die Cloud.</em> Nur leider habe ich kein Outlook installiert und wollte auch nicht erst alle Daten übernehmen. Dann kam mir eine andere Idee: Office 365 stellt mir auch eine IMAP-Schnittstelle zur Verfügung. Diese soll beispielsweise mit Thunderbird genutzt werden. Und somit ist die Lösung extrem einfach:</p>
<p>Ich habe meinen Office 365 Account in Thunderbird angelegt. Nun kann ich alle Ordner (auch mehrere und rekursiv) per Drag&#038;Drop nach Office 365 schieben und muss nur noch warten. Zur Sicherheit schiebe ich mit gedrückter Strg/Ctrl-Taste, somit kann ich nach dem Test entscheiden, welchen Baum ich löschen werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=513</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fehlermeldung beim Einbinden SqlExpr.pas</title>
		<link>http://blog.topdf.de/?p=503</link>
		<comments>http://blog.topdf.de/?p=503#comments</comments>
		<pubDate>Mon, 05 Nov 2012 19:42:42 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Delphi Win32]]></category>
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=503</guid>
		<description><![CDATA[Der Versuch, eine alte Anwendung auf einer frischen Delphi 7 Installation zu erstellen, brachte sofort beim Einbinden der Unit SqlExpr eine Fehlermeldung: Unit SqlExpr wurde mit einer unterschiedlichen Version von SqlConst.SNOERROR compiliert Leider haben mir der Tipp auf Delphipraxis nur bedingt weitergeholfen. Dazu soll folgender Code: SNOERROR =''; SWARNING =''; SCONNECTIONFAILED =''; SDRIVERINITFAILED =''; SOPTLOCKFAILED [...]]]></description>
				<content:encoded><![CDATA[<p>Der Versuch, eine alte Anwendung auf einer frischen Delphi 7 Installation zu erstellen, brachte sofort beim Einbinden der Unit <em>SqlExpr</em> eine Fehlermeldung:</p>
<blockquote><p>Unit SqlExpr wurde mit einer unterschiedlichen Version von SqlConst.SNOERROR compiliert</p></blockquote>
<p>Leider haben mir der Tipp auf <a href="http://www.delphipraxis.net/122336-%5Bfataler-fehler%5D-version-von-sqlconst-snoerror-compiliert.html">Delphipraxis</a> nur bedingt weitergeholfen. Dazu soll folgender Code:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="pascal" style="font-family:monospace;">SNOERROR <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SWARNING <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SCONNECTIONFAILED <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SDRIVERINITFAILED <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SOPTLOCKFAILED <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SINVALIDREF <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SNOTABLE <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SDBXError <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SNODATA <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SSQLERROR <span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
SSQLServerError<span style="color: #ff0000;">''</span><span style="color: #000066;">;</span></pre></td></tr></table></div>

<p>in der SqlConst.pas im Source\VCL Ordner eingefügt werden und das ganze erzeugt und nach <em>{Delphi}\Lib</em> und <em>{Delphi}\Lib\Debug</em> verteilt werden. Wie man diese Unit aber erzeugt, stand leider nicht dabei und es ist mir auch nicht gelungen, den Code habe ich trotzdem eingefügt, da diese pas-Datei im Suchpfad ist.</p>
<p>In der <a href="http://www.entwickler-ecke.de/topic_unit+sqlExpr+wurde+mit+einer+unterschiedlichen+Version_59219,0.html">Entwickler Ecke</a> habe ich dann den nächsten Tipp gefunden:</p>
<blockquote><p>Das nächste Problem scheint DBExpress zu sein, einige Projekte konnten nicht kompiliert werden, da SqlExpr.dcu mit einer anderen Version kompiliert wurde. Den Fehler konnte ich mittlerweile beheben, das Update hat im Verzeichnis $(DELPHI)\lib\ eine Datei SqlConst.dcu.de angelegt. Ich habe die Datei SqlConst.dcu dann nach SqlConst.dcu.org umbenannt und SqlConst.dcu.de nach SqlConst.dcu. Das gleiche auch nochmal im Verzeichnis $(DELPHI)/lib/debug.</p></blockquote>
<p>Nachdem ich auch diese Umbenennung durchgeführt habe, klappte es wieder wunderbar. Der Fehler scheint übrigens irgendwie mit der deutschen Lokalisierung vom ServicePack 1 für Delphi 7 im Zusammenhang zu stehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=503</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET Open Space Süd 2012 in Karlsruhe</title>
		<link>http://blog.topdf.de/?p=499</link>
		<comments>http://blog.topdf.de/?p=499#comments</comments>
		<pubDate>Sun, 15 Jul 2012 19:00:21 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Event]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=499</guid>
		<description><![CDATA[Eigentlich leide ich zur Zeit unter notorischem Zeitmangel. Aber das .NET Open Space in Karlsruhe habe ich mir dieses Jahr nicht nehmen lassen. Nachdem ich letztes Jahr nicht teilnehmen konnte, war es für mich der zweite Besuch. Viele Gesichter kannte ich aus diesem Grund schon. Die Veranstaltung wurde wieder in den Räumen von bluehands ausgerichtet. [...]]]></description>
				<content:encoded><![CDATA[<p>Eigentlich leide ich zur Zeit unter notorischem Zeitmangel. Aber das .NET Open Space in Karlsruhe habe ich mir dieses Jahr nicht nehmen lassen. Nachdem ich letztes Jahr nicht teilnehmen konnte, war es für mich der zweite Besuch. Viele Gesichter kannte ich aus diesem Grund schon. Die Veranstaltung wurde wieder in den Räumen von <a href="http://www.bluehands.de/">bluehands</a> ausgerichtet. Ich finde das nach wie vor beachtlich, alles einfach mal so umzuräumen. Danke!<br />
Die Themen wurden von den 70 Teilnehmern wieder selbst bestimmt und wie auch schon 2010 war es kein Problem, ausreichend Themen für die Agenda zu finden. Neuer großer Schwerpunkt war ganz klar die Entwicklung für Smartphones. Kaum einer kann sich der Problematik momentan entziehen und irgendwo ist mit dem Windows 8 Tablet ja auch von Microsoft etwas im Anmarsch, was deren Windows Phone pushen könnte. Interessant war in diesem Fall die aktuelle Dominanz von Apple-Hardware, zeitweise waren auf dem Openspace 80% der Notebooks und Tablets von Apple. Auf alle Fälle durften wir diesbezüglich einen guten Einblick in die Entwicklung für Android und Apple-Smartphones mit <a href="http://xamarin.com/">Xamarin</a> gewinnen.<br />
<a href="http://www.yellow-brick-code.org/">Christina Hirth</a> griff das Thema CleanCode(Developer) auf, was eine sehr intensive Diskussion in Gang brachte. Es herschte eine Einigkeit darüber, dass den meisten Teilnehmer vom <a href="https://twitter.com/#!/search/%23nossued">#nossued</a> das Thema wohl geläufig ist. Eine gute Möglichkeit, dieses in Firmen einzubringen, könnten Coding  Dojos sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=499</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Videos für Windows Phone 7 aufbereiten</title>
		<link>http://blog.topdf.de/?p=491</link>
		<comments>http://blog.topdf.de/?p=491#comments</comments>
		<pubDate>Sun, 20 May 2012 08:51:00 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=491</guid>
		<description><![CDATA[Wenn man das erste Mal ein Video auf sein Windows Phone übertragen will, wird man schnell feststellen, dass das alles nicht so einfach ist. Mittlerweile habe ich aber einen sehr einfachen Weg gefunden, der zudem noch kostenfrei ist. Zuerst braucht man das Tool Freemake. Dabei handelt es sich um einen universellen Video-Konverter, der beinahe jedes [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://blog.topdf.de/wp-content/uploads/2012/05/freemake1.png"><img src="http://blog.topdf.de/wp-content/uploads/2012/05/freemake1-150x150.png" alt="" title="Freemake Startbildschrim" width="150" height="150" class="alignright size-thumbnail wp-image-492" /></a>Wenn man das erste Mal ein Video auf sein Windows Phone übertragen will, wird man schnell feststellen, dass das alles nicht so einfach ist. Mittlerweile habe ich aber einen sehr einfachen Weg gefunden, der zudem noch kostenfrei ist.</p>
<p><a href="http://blog.topdf.de/wp-content/uploads/2012/05/freemake2.png"><img src="http://blog.topdf.de/wp-content/uploads/2012/05/freemake2-150x150.png" alt="" title="Profil für Windows Phone 7" width="150" height="150" class="alignleft size-thumbnail wp-image-495" /></a>Zuerst braucht man das Tool <a href="http://www.freemake.com/">Freemake</a>. Dabei handelt es sich um einen universellen Video-Konverter, der beinahe jedes Videos in mp4 wandeln kann. Dabei kann man für mp4 ein Profil hinterlegen, was den Ton auf Stereo begrenzt und das Video auf 800&#215;480 mit dem <a href="http://de.wikipedia.org/wiki/H.264">H.264</a> Codec.</p>
<p>Ein so konvertiertes Video kann man einfach im &#8220;Eigene Videos&#8221; Ordner von Windows ablegen und per <a href="http://zune.net/de-DE/">Zune</a> übertragen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=491</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pfadnamen für Ausgabe kürzen</title>
		<link>http://blog.topdf.de/?p=483</link>
		<comments>http://blog.topdf.de/?p=483#comments</comments>
		<pubDate>Thu, 15 Dec 2011 08:39:42 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=483</guid>
		<description><![CDATA[Im Microsoft .NET Framework ist schon lange eine Funktion zum Kürzen von Dateinamen enthalten. Aus c:\Windows\System32\MyDll.dll kann dann zum Beispiel c:\Windows\&#8230;\MyDll.dll werden. Hierzu greift man auf TextRenderer.MeasureText zurück. Allerding hat diese Funktion einen kleinen Fehler bei dem zurückgegebenen Wert, der hier beschrieben ist: Der Workaround ist zum Glück auch gleich angegeben, und kann dann so [...]]]></description>
				<content:encoded><![CDATA[<p>Im Microsoft .NET Framework ist schon lange eine Funktion zum Kürzen von Dateinamen enthalten. Aus <em>c:\Windows\System32\MyDll.dll</em> kann dann zum Beispiel <em>c:\Windows\&#8230;\MyDll.dll</em> werden. Hierzu greift man auf <a href="http://msdn.microsoft.com/de-de/library/7sy6awsb(v=VS.90).aspx">TextRenderer.MeasureText</a> zurück. Allerding hat diese Funktion einen kleinen Fehler bei dem zurückgegebenen Wert, der hier beschrieben ist:<br />
<a href="http://connect.microsoft.com/VisualStudio/feedback/details/620330/textrenderer-measuretext-with-textformatflags-pathellipsis-textformatflags-modifystring-flags#" title="Microsoft Connect"></a></p>
<p>Der Workaround ist zum Glück auch gleich angegeben, und kann dann so aussehen:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #6666cc; font-weight: bold;">string</span> filename <span style="color: #008000;">=</span> <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Copy</span><span style="color: #008000;">&#40;</span>filenameForOutput<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">.</span><span style="color: #0000FF;">IsNullOrEmpty</span><span style="color: #008000;">&#40;</span>filename<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>   
   TextRenderer<span style="color: #008000;">.</span><span style="color: #0000FF;">MeasureText</span><span style="color: #008000;">&#40;</span>filename, Font, Size,
     TextFormatFlags<span style="color: #008000;">.</span><span style="color: #0000FF;">PathEllipsis</span> <span style="color: #008000;">|</span> TextFormatFlags<span style="color: #008000;">.</span><span style="color: #0000FF;">ModifyString</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   filename <span style="color: #008000;">=</span> filename<span style="color: #008000;">.</span><span style="color: #0000FF;">Substring</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, filename<span style="color: #008000;">.</span><span style="color: #0000FF;">IndexOf</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">'<span style="color: #008080; font-weight: bold;">\0</span>'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Der Source zeigt auch gleich noch eine kleine andere Ergänzung: Die Funktion modifiziert den übergebenen String. Man sollte diesen also vorher kopieren, sofern man nicht schon mit einer Kopie des Strings arbeitet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=483</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bestimmen einer Zeitdifferenz mit SQL</title>
		<link>http://blog.topdf.de/?p=474</link>
		<comments>http://blog.topdf.de/?p=474#comments</comments>
		<pubDate>Mon, 24 Oct 2011 03:46:30 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=474</guid>
		<description><![CDATA[Eine Abfrage im SQL Server enthält eine time-Spalte: SELECT &#91;Activity&#93;, &#91;Duration&#93; FROM TableName Die Aufgabenstellung bestand darin, die Zeiten zu addieren. Leider wurde dieser Versuch SELECT SUM&#40;&#91;Duration&#93;&#41; FROM TableName abgelehnt: Der Operanddatentyp time ist für den sum-Operator ungültig. was zwar nicht einleuchtend, aber auch nicht zu ändern war. Die Lösung war die vorherige Umwandlung der [...]]]></description>
				<content:encoded><![CDATA[<p>Eine Abfrage im SQL Server enthält eine time-Spalte:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>Activity<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>Duration<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">FROM</span> TableName</pre></td></tr></table></div>

<p>Die Aufgabenstellung bestand darin, die Zeiten zu addieren. Leider wurde dieser Versuch</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">SUM</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>Duration<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> TableName</pre></td></tr></table></div>

<p>abgelehnt:</p>
<pre>Der Operanddatentyp time ist für den sum-Operator ungültig.</pre>
<p>was zwar nicht einleuchtend, aber auch nicht zu ändern war.<br />
Die Lösung war die vorherige Umwandlung der Zeit in eine Datumsdifferenz vom Typ Minuten:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">SUM</span><span style="color: #66cc66;">&#40;</span>DATEDIFF<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">MINUTE</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'00:00:00'</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>Duration<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> TableName</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=474</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manuelles schreiben einer lokalen Url in Asp.NET</title>
		<link>http://blog.topdf.de/?p=461</link>
		<comments>http://blog.topdf.de/?p=461#comments</comments>
		<pubDate>Fri, 23 Sep 2011 18:50:32 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[Asp.NET]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=461</guid>
		<description><![CDATA[Glaubt man der Dokumentation von HttpRequest.ApplicationPath, so ist es recht einfach, einen Link in einer eigenen Asp.NET Seite zu verwenden: Label1.Text = Request.ApplicationPath; Image1.ImageUrl = Request.ApplicationPath + &#34;/images/Image1.gif&#34;; Label2.Text = Image1.ImageUrl; Aber damit steht man schnell vor einem Problem: Liegt die Anwendung im Root, wie es beispielsweise standardmäßig beim Visual Studio 2010 Development Server der [...]]]></description>
				<content:encoded><![CDATA[<p>Glaubt man der Dokumentation von <a href="http://msdn.microsoft.com/de-de/library/system.web.httprequest.applicationpath.aspx">HttpRequest.ApplicationPath</a>, so ist es recht einfach, einen Link in einer eigenen Asp.NET Seite zu verwenden:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="asp" style="font-family:monospace;">Label1.<span style="color: #9900cc;">Text</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #990099; font-weight: bold;">Request</span>.<span style="color: #9900cc;">ApplicationPath</span><span style="color: #006600; font-weight: bold;">;</span>
Image1.<span style="color: #9900cc;">ImageUrl</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #990099; font-weight: bold;">Request</span>.<span style="color: #9900cc;">ApplicationPath</span> + <span style="color: #cc0000;">&quot;/images/Image1.gif&quot;</span><span style="color: #006600; font-weight: bold;">;</span>
Label2.<span style="color: #9900cc;">Text</span> <span style="color: #006600; font-weight: bold;">=</span> Image1.<span style="color: #9900cc;">ImageUrl</span><span style="color: #006600; font-weight: bold;">;</span></pre></td></tr></table></div>

<p>Aber damit steht man schnell vor einem Problem: Liegt die Anwendung im Root, wie es beispielsweise standardmäßig beim Visual Studio 2010 Development Server der Fall ist, so erhält man als Ergebnis nur ein <strong>/</strong>. Die korrekte Zeile wäre dann also:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="asp" style="font-family:monospace;">Image1.<span style="color: #9900cc;">ImageUrl</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #990099; font-weight: bold;">Request</span>.<span style="color: #9900cc;">ApplicationPath</span> + <span style="color: #cc0000;">&quot;images/Image1.gif&quot;</span><span style="color: #006600; font-weight: bold;">;</span></pre></td></tr></table></div>

<p>Befindet sich die Seite aber in einem virtuellen Verzeichnis, so kommt das Verzeichnis <strong>ohne abschließenden /</strong> zurück:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="asp" style="font-family:monospace;">Image1.<span style="color: #9900cc;">ImageUrl</span> <span style="color: #006600; font-weight: bold;">=</span> <span style="color: #990099; font-weight: bold;">Request</span>.<span style="color: #9900cc;">ApplicationPath</span> + <span style="color: #cc0000;">&quot;/images/Image1.gif&quot;</span><span style="color: #006600; font-weight: bold;">;</span></pre></td></tr></table></div>

<p>Je nach Speicherort muss man also beim händischen Zusammensetzen der URL&#8217;s also den abschließenden Slash berücksichtigen, oder eben auch nicht.</p>
<p>Eine gute Lösung habe ich in einem <a href="http://weblogs.asp.net/dneimke/archive/2004/05/17/133116.aspx">Blog-Artikel von 2004</a> gefunden:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="asp" style="font-family:monospace;">VirtualPathUtility.<span style="color: #9900cc;">ToAbsolute</span><span style="color: #006600; font-weight:bold;">&#40;</span><span style="color: #cc0000;">&quot;~/images/Image1.gif&quot;</span><span style="color: #006600; font-weight:bold;">&#41;</span></pre></td></tr></table></div>

<p>Damit überlässt man Asp.NET die korrekte Umsetzung, welche auch tadellos und ohne Experimente funktioniert!</p>
<p><strong>Update:</strong><br />
Manchmal sieht man einfach den Wald vor lauter Bäumen nicht. Die kürzere Lösung ist <a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.content.aspx">Url.Content</a>, welche ein vergleichbares Ergebnis liefert und auch in den Templates von Asp.NET MVC3 verwendet wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=461</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vererbung von Properties entfernt die Attribute</title>
		<link>http://blog.topdf.de/?p=450</link>
		<comments>http://blog.topdf.de/?p=450#comments</comments>
		<pubDate>Thu, 30 Jun 2011 18:45:46 +0000</pubDate>
		<dc:creator>Mario Noack</dc:creator>
				<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Fehlersuche]]></category>

		<guid isPermaLink="false">http://blog.topdf.de/?p=450</guid>
		<description><![CDATA[Für eine Erweiterung von meinem Quellcode hatte ich geplant, ein paar Properties mit Attributen zu versehen. Dabei sollten die Properties virtual sein. Die Abfrage der Attribute sollte dann mittels GetCustomAttributes geschehen. Leider hat das gar nicht funktioniert, was auch schon andere .NET-Programmierer feststellen mussten. Darum habe ich die Problemstellung extrahiert: Zum Prüfen der Attribute wurde [...]]]></description>
				<content:encoded><![CDATA[<p>Für eine Erweiterung von meinem Quellcode hatte ich geplant, ein paar Properties mit Attributen zu versehen. Dabei sollten die Properties virtual sein. Die Abfrage der Attribute sollte dann mittels <a href="http://msdn.microsoft.com/de-de/library/cs58sb90.aspx">GetCustomAttributes</a> geschehen. Leider hat das gar nicht funktioniert, was auch schon <a href="http://stackoverflow.com/questions/2520035/inheritance-of-custom-attributes-on-abstract-properties">andere .NET-Programmierer</a> feststellen mussten. Darum habe ich die Problemstellung extrahiert:</p>
<p>Zum Prüfen der Attribute wurde folgende Funktion verwendet:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> CheckAttribute<span style="color: #008000;">&#40;</span>MemberInfo memberInfo<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">var</span> attributes <span style="color: #008000;">=</span> memberInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">GetCustomAttributes</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>attributes<span style="color: #008000;">.</span><span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0600FF; font-weight: bold;">return</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">object</span> attribute <span style="color: #0600FF; font-weight: bold;">in</span> attributes<span style="color: #008000;">&#41;</span>
        Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;The type of the attribute in {1} is {0}.&quot;</span>, 
            attribute, memberInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Weiterhin wurden zwei Klassen geschrieben, wo einmal eine abgeleitete Methode und eine abgeleitete Propertie mit Attributen versehen wurde:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">abstract</span> <span style="color: #6666cc; font-weight: bold;">class</span> BaseClass
<span style="color: #008000;">&#123;</span>
    <span style="color: #008000;">&#91;</span>TestAttribute<span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">virtual</span> <span style="color: #6666cc; font-weight: bold;">String</span> TestProperty <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">get</span><span style="color: #008000;">;</span> <span style="color: #0600FF; font-weight: bold;">set</span><span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008000;">&#91;</span>TestAttribute<span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">virtual</span> <span style="color: #6666cc; font-weight: bold;">void</span> TestMethod<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">return</span><span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> DerivedClass <span style="color: #008000;">:</span> BaseClass
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">string</span> TestProperty <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">get</span><span style="color: #008000;">;</span> <span style="color: #0600FF; font-weight: bold;">set</span><span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> TestMethod<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">TestMethod</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> TestAttribute <span style="color: #008000;">:</span> Attribute
<span style="color: #008000;">&#123;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Zu guter Letzt wurde das ganze überprüft:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="csharp" style="font-family:monospace;">Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;BaseClass:&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
CheckAttribute<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>BaseClass<span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetProperty</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;TestProperty&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
CheckAttribute<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>BaseClass<span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetMethod</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;TestMethod&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;DerivedClass:&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
CheckAttribute<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>DerivedClass<span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetProperty</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;TestProperty&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
CheckAttribute<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>DerivedClass<span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetMethod</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;TestMethod&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></td></tr></table></div>

<p>Das Ergebnis fiel überraschend aus: </p>
<pre>BaseClass:
The type of the attribute in TestProperty is TestAttrib.TestAttribute.
The type of the attribute in TestMethod is TestAttrib.TestAttribute.
DerivedClass:
The type of the attribute in TestMethod is TestAttrib.TestAttribute.</pre>
<p>Wähernd die Methode <i>TestMethod</i> in beiden Klassen als mit dem Attribut ausgezeichnet, erkannt wurde, war dies bei der Eigenschaft <i>TestProperty</i> nicht der Fall. Um die Ursache zu finden, war ein <a href="http://www.reflector.net/">Blick</a> in die IL notwendig. Hier die Umsetzung der BaseClass, welche das Attribute in beiden Fällen korrekt definiert.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008000;">.</span><span style="color: #0000FF;">method</span> <span style="color: #0600FF; font-weight: bold;">public</span> hidebysig newslot <span style="color: #0600FF; font-weight: bold;">virtual</span> instance <span style="color: #6666cc; font-weight: bold;">void</span> TestMethod<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> cil managed
<span style="color: #008000;">&#123;</span>
    <span style="color: #008000;">.</span><span style="color: #0000FF;">custom</span> instance <span style="color: #6666cc; font-weight: bold;">void</span> TestAttrib<span style="color: #008000;">.</span><span style="color: #0000FF;">TestAttribute</span><span style="color: #008000;">::.</span><span style="color: #0000FF;">ctor</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008000;">.</span><span style="color: #0000FF;">property</span> instance <span style="color: #6666cc; font-weight: bold;">string</span> TestProperty
<span style="color: #008000;">&#123;</span>
    <span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">get</span> instance <span style="color: #6666cc; font-weight: bold;">string</span> TestAttrib<span style="color: #008000;">.</span><span style="color: #0000FF;">BaseClass</span><span style="color: #008000;">::</span><span style="color: #0000FF;">get_TestProperty</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">set</span> instance <span style="color: #6666cc; font-weight: bold;">void</span> TestAttrib<span style="color: #008000;">.</span><span style="color: #0000FF;">BaseClass</span><span style="color: #008000;">::</span><span style="color: #0000FF;">set_TestProperty</span><span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">.</span><span style="color: #0000FF;">custom</span> instance <span style="color: #6666cc; font-weight: bold;">void</span> TestAttrib<span style="color: #008000;">.</span><span style="color: #0000FF;">TestAttribute</span><span style="color: #008000;">::.</span><span style="color: #0000FF;">ctor</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Die Ableitung war aber überaschend umgesetzt. Während die Methode offensichtlich überschrieben wurde, wurde die Propertie quasi neu angelegt, aber ohne dem zugewiesenen Attribut.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008000;">.</span><span style="color: #0000FF;">method</span> <span style="color: #0600FF; font-weight: bold;">public</span> hidebysig <span style="color: #0600FF; font-weight: bold;">virtual</span> instance <span style="color: #6666cc; font-weight: bold;">void</span> TestMethod<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> cil managed
<span style="color: #008000;">&#123;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008000;">.</span><span style="color: #0000FF;">property</span> instance <span style="color: #6666cc; font-weight: bold;">string</span> TestProperty
<span style="color: #008000;">&#123;</span>
    <span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">get</span> instance <span style="color: #6666cc; font-weight: bold;">string</span> TestAttrib<span style="color: #008000;">.</span><span style="color: #0000FF;">DerivedClass</span><span style="color: #008000;">::</span><span style="color: #0000FF;">get_TestProperty</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">set</span> instance <span style="color: #6666cc; font-weight: bold;">void</span> TestAttrib<span style="color: #008000;">.</span><span style="color: #0000FF;">DerivedClass</span><span style="color: #008000;">::</span><span style="color: #0000FF;">set_TestProperty</span><span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Damit war das Ergebnis der Untersuchung: <a href="http://msdn.microsoft.com/de-de/library/cs58sb90.aspx">GetCustomAttributes</a> hat definitionsgemäß auch die Ableitungen untersucht. Jedoch verlieren sich die Attribute beim Überschreiben von Properties. Eine Erklärung dafür habe ich bis jetzt nicht gefunden, ich konnte den Effekt aber in .NET 2.0 &#8211; 4.0 nachstellen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.topdf.de/?feed=rss2&#038;p=450</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
