<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx</link><description>In my comments Jeff asks: I have a question, how was the decision for these 2 classes ctor parameters made... Constructor for ArgumentNullException public ArgumentNullException( string paramName, string message) Constructor for ArgumentException public</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#73576</link><pubDate>Mon, 16 Feb 2004 06:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:73576</guid><dc:creator>David Bossert</dc:creator><description>&amp;quot;Got any other examples that should be in my API Design Hall of Shame?&amp;quot;&lt;br&gt;&lt;br&gt;Just off the top of my head:&lt;br&gt;&lt;br&gt;AppDomain vs. ApplicationDomain&lt;br&gt;MarshalByRefObject vs. MarshalByReferenceObject&lt;br&gt;STAThreadAttribute vs. StaThreadAttribute&lt;br&gt;ObjRef vs. ObjectReference&lt;br&gt;&lt;br&gt;...and so on. If I had my way, all of these annoying little naming mishaps would be fixed without notice and anyone who complained about compatibility would risk being beaten with a coat hanger... but that's just me.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#73594</link><pubDate>Mon, 16 Feb 2004 08:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:73594</guid><dc:creator>Sami Vaaraniemi</dc:creator><description>My candidate to the Hall of Shame is IDbDataAdapter.Fill.&lt;br&gt;&lt;br&gt;There is no override that would take a DataSet and a table name making it difficult to use it with typed datasets. In order to fill typed datasets, my database provider agnostic data layer has to use reflection to invoke the provider specific Fill with the table name parameter.</description></item><item><title>API Design Hall of Shame: SmtpMail.SmtpServer </title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#73647</link><pubDate>Mon, 16 Feb 2004 09:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:73647</guid><dc:creator>Mike</dc:creator><description>It is declared as&lt;br&gt;&lt;br&gt;public static string SmtpServer {get; set;}&lt;br&gt;&lt;br&gt;The MSDN documentation states:&lt;br&gt;    Thread Safety&lt;br&gt;    Any public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Any instance members are not guaranteed to be thread safe.&lt;br&gt;&lt;br&gt;But, to send a message you need to set SmtpServer first (static property), and then send a message (static method). How should one do this &amp;quot;safe for multithreaded operations&amp;quot;?&lt;br&gt;&lt;br&gt;Of course, if I write standalone application, this is not a problem - I can lock something. But if there is other code running in same process which can wish to send e-mail too, I am out of luck.&lt;br&gt;</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#74237</link><pubDate>Mon, 16 Feb 2004 19:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:74237</guid><dc:creator>RichB</dc:creator><description>Any method in System.Security.Cryptography. Having written .Net code since 2000, it was a shock recently to use the Crypto APIs and find how bad they are.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#74238</link><pubDate>Mon, 16 Feb 2004 19:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:74238</guid><dc:creator>RichB</dc:creator><description>CLSCompliantAttribute&lt;br&gt;&lt;br&gt;- Doesn't follow the naming conventions. Should be ClsCompliantAttribute</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#74353</link><pubDate>Mon, 16 Feb 2004 20:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:74353</guid><dc:creator>Ben</dc:creator><description>I was wondering if there was any way to see this list - I think it'd be a great read. Wouldn't it also be neat to set a forum-like system up for the public to post their little oddities that they have found (like those posted here)?</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#74439</link><pubDate>Tue, 17 Feb 2004 00:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:74439</guid><dc:creator>Kevin Westhead</dc:creator><description>System.Windows.Forms.FileDialog has always annoyed me. This class is defined as:&lt;br&gt;&lt;br&gt;public abstract class FileDialog : CommonDialog&lt;br&gt;&lt;br&gt;However the documentation states:&lt;br&gt;&lt;br&gt;&amp;quot;FileDialog is an abstract class, and cannot be created directly. Additionally, you cannot inherit from this class.&amp;quot;&lt;br&gt;&lt;br&gt;This seemingly contradictory statement is in fact true because FileDialog contains the following method:&lt;br&gt;&lt;br&gt;internal abstract bool RunFileDialog(OPENFILENAME_I ofn);&lt;br&gt;&lt;br&gt;The design here seems wrong and it is annoying when you have expectations (based on experience) about what you can do with a class defined as &amp;quot;public abstract&amp;quot;, only to find out that the class behaves differently.&lt;br&gt;&lt;br&gt;It is documented at least, which I suppose is something since you end up looking through the docs eventually. &amp;lt;g&amp;gt;</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#74494</link><pubDate>Tue, 17 Feb 2004 02:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:74494</guid><dc:creator>_</dc:creator><description>RichB,&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; CLSCompliantAttribute &lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; - Doesn't follow the naming conventions. Should be ClsCompliantAttribute &lt;br&gt;&lt;br&gt;It does follow the conventions, according to &lt;a target="_new" href="http://blogs.msdn.com/brada/archive/2004/02/07/69436.aspx"&gt;http://blogs.msdn.com/brada/archive/2004/02/07/69436.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt;Seeya</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#74561</link><pubDate>Tue, 17 Feb 2004 04:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:74561</guid><dc:creator>Brad Abrams</dc:creator><description>Nope, Kevin is right, it should be ClsCompliant... Three letters or more == Pascal cased.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#74722</link><pubDate>Tue, 17 Feb 2004 11:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:74722</guid><dc:creator>Atif Aziz</dc:creator><description>It's interesting to note that a lot of complaints about casing issues can be fixed with a small feature that exists in the C# compiler today: Aliasing. That is, you can rename a type explicitly as you import it:&lt;br&gt;&lt;br&gt;#region System aliases&lt;br&gt;&lt;br&gt;using ClsCompliantAttribute = System.CLSCompliantAttribute;&lt;br&gt;using ApplicationDomain = System.AppDomain;&lt;br&gt;using MarshalByReferenceObject = System.MarshalByRefObject;&lt;br&gt;using StaThreadAttribute = System.STAThreadAttribute;&lt;br&gt;using ObjectReference = System.Runtime.Remoting.ObjRef;&lt;br&gt;&lt;br&gt;#endregion&lt;br&gt;&lt;br&gt;This is also do-able in Visual Basic.NET, which goes even further than C# if you dig into the books. What I never understood, on the other hand, is why the VB team left out aliasing of interfaces! Anyhow, just wanted to let some VB guy reading this comment to know that this solution is applicable there too.&lt;br&gt;&lt;br&gt;Of course, it should not be our job to fix-up such mistakes and the improted list could look rather ugly at the beginning of each file (which is why it's good to hide it into a collapsed region), but it's nonethelss an option to consider if it really kills you to write AppDomain instead of ApplicationDomain.&lt;br&gt;&lt;br&gt;By the way, aliasing is nice even if you don't want to rename a type. It is very useful for reducing the type noice in your scope. For example, why import the whole System.IO namespace if all you need is some method of the Path class? Here you would use aliasing as follows:&lt;br&gt;&lt;br&gt;using Path = System.IO.Path;&lt;br&gt;&lt;br&gt;Personally, I can live with such mistakes in the BCL with the hope that it will be fixed through some ingenious scheme of the CLR, compilers, the IDE or tools like FxCop. Hey, I've lived with some atrocities in Win32 for a big part of my career that the .NET Framework is pleasant experience any day. The quality bar though has to be raised for the next time as it was raised by the BCL with the first release. Looking at this blog tells me so far that someone is watching this space and a big effort is being made to pay attention to such details and fix them for the future. That's a good thing and keep up the great work, Brad. What's scary is the sheer size of the design guidelines, which seems to be growing by the day. This is a clear indication that we need to make things simpler, perhaps even question some of the basic notions as we understand them today, in order to make the next big leap.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#75054</link><pubDate>Tue, 17 Feb 2004 20:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75054</guid><dc:creator>Dwayne</dc:creator><description>Here's one for the hall of shame.&lt;br&gt;&lt;br&gt;There is no base data access exception for the data access libraries.  For example, the System.Data.SqlClient.SqlException derives from System.SystemException.  So does the System.Data.OracleClient.OracleException class.  This makes it more difficult to create a common data access interface that uses these classes internally but throws an implementation agnostic exception.  It would have been nice if they had a System.Data.DataException that these exceptions derived from, so that my interfaces could be consistent.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#75055</link><pubDate>Tue, 17 Feb 2004 20:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75055</guid><dc:creator>Dwayne</dc:creator><description>The System.Collections API.&lt;br&gt;&lt;br&gt;I'm surprised that the System.Collections.ICollection does not even have a Contains(object) method.&lt;br&gt;</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#75057</link><pubDate>Tue, 17 Feb 2004 20:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75057</guid><dc:creator>Dwayne</dc:creator><description>Actually, the most annoying thing about the System.Collections API is that CollectionBase implements IList.  Most of the methods/properties in IList would be better defined on ICollection IMHO.  At very least the Add, Clear, Contains, Insert, and Remove methods, as well as the IsReadOnly property.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#75074</link><pubDate>Tue, 17 Feb 2004 21:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75074</guid><dc:creator>Tom McKearney</dc:creator><description>Well, it exists.  THey're just not using it the way you'd like.&lt;br&gt;&lt;br&gt;&lt;a target="_new" href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdatadataexceptionclasstopic.asp"&gt;http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdatadataexceptionclasstopic.asp&lt;/a&gt;</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#75171</link><pubDate>Tue, 17 Feb 2004 23:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75171</guid><dc:creator>Dwayne</dc:creator><description>Good point Tom, that'll teach me to write my response without first looking at the APIs.  The point I was making still stands though.  There is no common base exception type for the database-implementation specific exceptions that can identify the exception as being one generated by the database.&lt;br&gt;</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#75411</link><pubDate>Wed, 18 Feb 2004 10:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75411</guid><dc:creator>Atif Aziz</dc:creator><description>Actually, talking about Exceptions, I think that the whole exception hierarchy is unreliable and broken in the .NET Framework. By unreliable, I mean that I cannot use it to make the right choices about the base exceptions and write code that can gracefully and predictably recover from a given situation while keeping forward and backward compatibility in mind. I think there is no real good story here. When is something just an Exception, when is it a SystemException and when is it an ApplicationException? I know that right thing for my own exception hierarchy is to base it off ApplicationException, but when I look at the .NET Framework, I get the impression that the various teams could not always agree on the best place to branch off their exception hierarchy. For example, some exceptions from the framework are based off ApplicationException. What makes things complicated are things like ArgumentException. This one inherits from SystemException, which means that if I inherit from it, then I am essentially making my exception a system one. The documentation states that, &amp;quot;[SystemException] is provided as a means to differentiate between exceptions defined by the system versus exceptions defined by applications.&amp;quot; So the question is when are you a system and when are you an application? ArgumentException is probably not the best example because, frankly, no one would catch it at runtime since it probably means that you haven't tested things correctly and are just being plain paranoid. So a better case in point might be System.IO.IOException. If I am writing an I/O library and I want to create an exception hierarchy, should I base it off System.IO.IOException (which by the way inherits from SystemException) or create my own IOException that inherits from ApplicationException? Who is the system here? Is the SystemException space reserved for Microsoft? If that's the case, then the compilers should not allow anyone to inherit from SystemException or Exception.&lt;br&gt;&lt;br&gt;Perhaps a better way to solve this problem would have been through attributes or marker interfaces. I don't believe that OO hierarchies are the best candidates for dealing with exceptions and the versioning issues that arise from it. The lack of consistency and a good story is what makes even some otherwise very clever piece of code to do something scary like this:&lt;br&gt;&lt;br&gt;try&lt;br&gt;{&lt;br&gt;    ...&lt;br&gt;}&lt;br&gt;catch (Exception e)&lt;br&gt;{&lt;br&gt;    ...&lt;br&gt;}&lt;br&gt;&lt;br&gt;Frankly, if you're not re-throwing the exception in the catch block then you've just broken everything because you'd end up even swalloing ridiculous exceptions like StackOverflowException, or God forbid, ExecutionEngineException. I can't imagine what this do for Yukon where various pieces of managed code need to run in a server reliably and 24 by 7. If they're swallowing system exceptions, then they're essentially hiding pretty grave situations from the host that normally lead to, say, the termination of their AppDomain.&lt;br&gt;&lt;br&gt;Luckily, FXCop has a design rule that checks for the following violation: &amp;quot;You should not catch Exception or SystemException.&amp;quot; However, I've found that in practice, you are at the pure mercy of how someone designed their exception hierarchy. If they based it off System.Exception, then you're left with no real choices. Also, use of FxCop is best practice and not mandatory.&lt;br&gt;&lt;br&gt;Given this situation, I would be inclined to put the whole exception hierarchy into the API Design Hall of Shame.</description></item><item><title>Kicking the Dead Horse:  More on Exceptions</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#75566</link><pubDate>Wed, 18 Feb 2004 18:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:75566</guid><dc:creator>Kirk Allen Evans' XML Blog</dc:creator><description /></item><item><title>A compilation of new .NET Design Guidelines</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#77093</link><pubDate>Fri, 20 Feb 2004 18:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:77093</guid><dc:creator>Ken Brubaker</dc:creator><description>For my own reference, I thought I'd compile a quick list of design guidelines added by Brad Abrams, et al.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#77134</link><pubDate>Fri, 20 Feb 2004 17:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:77134</guid><dc:creator>Diego Mijelshon</dc:creator><description>Some of the biggest mistakes in API design are in the Collections Framework:&lt;br&gt;&lt;br&gt;Why in the world System.Array implements IList.Contains as private?&lt;br&gt;Why do Arrays have a Length property instead of Count? (or vice-versa)&lt;br&gt;&lt;br&gt;I could go on and on...</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#77256</link><pubDate>Fri, 20 Feb 2004 20:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:77256</guid><dc:creator>Brian Grunkemeyer</dc:creator><description>On these two questions:&lt;br&gt;&lt;br&gt;*) Why in the world System.Array implements IList.Contains as private? &lt;br&gt;&lt;br&gt;The thought was it was just syntactic sugar around IndexOf, or for sorted arrays, BinarySearch.  Users figure this out themselves, and if they know their array is sorted, they can do this more efficiently than we could by simply calling the BinarySearch method.  And if we didn't need to expose it, why add the surface area?&lt;br&gt;&lt;br&gt;I was toying with suggesting that we make Contains public on Array, but I'm not sure that's the best decision for the product.  In our Whidbey release, to support generic programming in a more natural way than C++'s Standard Template Library, we made T[] implement IList&amp;lt;T&amp;gt;.  Of course there's a Contains method on IList&amp;lt;T&amp;gt;, which ends up calling Array's new IndexOf&amp;lt;T&amp;gt;.  This can theoretically give better performance (with the right IL code generators and the appropriate work in our current JIT and/or a future JIT - measuring on any publically released V2 build right now is probably not a useful exercise).  However, since we only made some arrays, not all arrays, implement IList&amp;lt;T&amp;gt;, we didn't define a Contains&amp;lt;T&amp;gt; on the Array class directly (there is one subtle internal hack where we violate the type system to make the type system useful for generic programming).  So we haven't accidentally solved your feature request yet.  &lt;br&gt;&lt;br&gt;But there's no technical reason we couldn't add an Array.Contains&amp;lt;T&amp;gt; that is a simple wrapper around Array.IndexOf&amp;lt;T&amp;gt;.  You would still be better off calling BinarySearch&amp;lt;T&amp;gt; if your array is sorted though.  I'll run this by a few people - maybe this would be interesting &amp;amp; useful.&lt;br&gt;&lt;br&gt;&lt;br&gt;*) Why do Arrays have a Length property instead of Count? (or vice-versa) &lt;br&gt;&lt;br&gt;Length made more sense for arrays, where they are always a series of values in memory.  You can pin them &amp;amp; do pointer arithmetic on arrays of value types, etc.  They're similar to C arrays, and we had that mentality firmly ingrained in us.&lt;br&gt;&lt;br&gt;Collections can include data structures like trees or an infinite series of prime numbers.  Neither of these has a length, and only one has a finite count.  The naming issue here was too much to swallow, so we left arrays with Length and collections with Count.  Yes, it's a bit confusing, but if this is the worst of the problems our users are running into, we've done a good job.</description></item><item><title>Documentation bug for HttpServerUtility.Transfer</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#77599</link><pubDate>Sat, 21 Feb 2004 18:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:77599</guid><dc:creator>Ken Brubaker</dc:creator><description>Documentation bug for HttpServerUtility.Transfer</description></item><item><title>Documentation bug for HttpServerUtility.Transfer</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#77661</link><pubDate>Sat, 21 Feb 2004 23:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:77661</guid><dc:creator>SampoSoft .NET Blog</dc:creator><description /></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#79092</link><pubDate>Tue, 24 Feb 2004 13:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:79092</guid><dc:creator>Diego Mijelshon</dc:creator><description>Brian,&lt;br&gt;&lt;br&gt;You're being a little too defensive with your product. Believe me, I'm not trying to destroy it; I just want to help you make it even better :-)&lt;br&gt;&lt;br&gt;I just think it wouldn't hurt to have IList.Contains and IList.Count marked public instead of private.&lt;br&gt;I don't care if they actually call !(Array.IndexOf(this, value) &amp;lt; this.GetLowerBound(0)) and this.Length. That's just an implementation detail that shouln't change the API.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#79770</link><pubDate>Wed, 25 Feb 2004 12:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:79770</guid><dc:creator>Atif Aziz</dc:creator><description>HttpException and all dervied exceptions are not marked as serializable! I can't imagine any reason for them not to be serializable. It's not like I want to persist the exceptions to disk, but lack of serializability in these classes means that they can't get tossed across remoting boundaries such as AppDomains and contexts. What's more, why on Earth do they inherit from System.Runtime.InteropServices.ExternalException, which is supposed to be, accoriding to the docs, the base exception type for all COM interop exceptions and structured exception handling (SEH) exceptions. Shame, shame, shame. :-) BTW, although Mono follows or has to follow the same exception hierarchy, it does at least mark HttpException as serializable.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#81537</link><pubDate>Sat, 28 Feb 2004 19:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:81537</guid><dc:creator>Brad Abrams</dc:creator><description>Good point, Atif... I talked wth the dev team for HttpException.  You will be happy to know they are making it serializable for Whidbey.  The ExternalException base class is an oddness, but is harder to change.  </description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#81591</link><pubDate>Sun, 29 Feb 2004 00:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:81591</guid><dc:creator>Brad Abrams</dc:creator><description>Mike, on the issues with SmtpServer, you will be happy to know that in Whidbey we will be adding a much better mail support to the platform that does, I am told, fix this problem.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#81649</link><pubDate>Sun, 29 Feb 2004 05:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:81649</guid><dc:creator>Ilya Ryzhenkov</dc:creator><description>My favorite is internal bool EndsWith(char value) in String class. Why it would be internal? Also, there is no bool StartsWith(char value).</description></item><item><title>Windows.Management</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#82941</link><pubDate>Tue, 02 Mar 2004 23:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:82941</guid><dc:creator>Mike Krings</dc:creator><description>Publishing WMI Classes is nearly unrecoverable in case of a failure:&lt;br&gt;&lt;br&gt;If the WMI class is not yet registered and the user is not in the Admin group, a simple System.Exception is thrown. No real chance to gracefully handle this, as the only hint on the source of the error is the error message.&lt;br&gt;&lt;br&gt;If publishing fails because of an Security exception, the Exception raised is a COMException (shouldn't it be a ComException ?) with a WMI specific (not  System.Management published) HRESULT of 0x80041003.&lt;br&gt;&lt;br&gt;Looks like a real hasty transformation of the WMI API.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#83326</link><pubDate>Wed, 03 Mar 2004 17:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:83326</guid><dc:creator>RichB</dc:creator><description>Random.Next(0,1);&lt;br&gt;&lt;br&gt;does not return numbers in the set {0..1}. It returns numbers in the set {0..0}. Arghh!</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#84939</link><pubDate>Sat, 06 Mar 2004 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:84939</guid><dc:creator>Kit George</dc:creator><description>With regards to Ilya's question (why not add EndsWith/Startswith overloads that accept a char), there's simply not much of a gain here. We actually have a feature request for this, but it's lower down on our priority stack.&lt;br&gt;&lt;br&gt;On Rich's Random.Next issue: yup, this is an unfortunate one. But basically, we can't change this behavior, for breaking change reasons. However, I just entered a feature request for us to consider either a new method, or a new overload (consider obsoleting this one).</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#107436</link><pubDate>Sun, 04 Apr 2004 22:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:107436</guid><dc:creator>Adrian Florea</dc:creator><description>Why this singleton System.Reflection.Missing has the constructor internal instead of private? Same question for the internal class System.Empty.</description></item><item><title>re: ArgumentNullException and ArgumentException</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#108000</link><pubDate>Mon, 05 Apr 2004 22:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:108000</guid><dc:creator>Brian Grunkemeyer</dc:creator><description>About the Missing &amp;amp; Empty constructors - there is no real difference.  Whether the constructors are internal or private has no impact to the public API, especially since these classes are private.  I suspect this was required in our original design, but never got fixed when we revamped these classes, about the same time we removed Variant from the public namespace about 2.5 years into writing V1.  Either that, or it was an earlier compiler limitation.  (We went through two separate compilers for V1 before we ported our source to C#.)  &lt;br&gt;&lt;br&gt;But this is a little odd, and I'll make these constructors are private.&lt;br&gt;</description></item><item><title>re: Internet, Intranet e le redirezioni</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#228822</link><pubDate>Mon, 13 Sep 2004 18:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:228822</guid><dc:creator>StrangeLog - Il blog di Andrea Saltarello</dc:creator><description /></item><item><title>Documentation bug for HttpServerUtility.Transfer</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#229715</link><pubDate>Wed, 15 Sep 2004 04:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:229715</guid><dc:creator>SampoSoft .NET</dc:creator><description /></item><item><title> Brad Abrams ArgumentNullException and ArgumentException | Wood TV Stand</title><link>http://blogs.msdn.com/brada/archive/2004/02/15/73535.aspx#9679169</link><pubDate>Mon, 01 Jun 2009 20:52:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9679169</guid><dc:creator> Brad Abrams ArgumentNullException and ArgumentException | Wood TV Stand</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://woodtvstand.info/story.php?id=1343"&gt;http://woodtvstand.info/story.php?id=1343&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>