I'm not sure how the entire System.Web namespace violates the principle that subtypes must be interchangable with parent types. Care to elaborate?

The canonical Liskov violation is a square derived from a rectangle. Assuming the rectangle has setters and getters for both width and height, the square would need to set both values whenever either setter was called, which means that a rectangle would fail any square tests which verified that height and width were equal.

Alan

Alan Ridlehoover
[email protected]
206.412.2526

On Mar 9, 2011, at 9:32 PM, Scott Koon <[email protected]> wrote:

System.Web

On Wed, Mar 9, 2011 at 9:07 PM, Chris Tavares <[email protected]> wrote: Hrm... is it really, though? Consider, what’s the actual contract on the base class that derived classes have to adhere to?



Well, if CanRead returns false, calls to Read will throw. If CanRead returns true, Read reads stuff.

If CanWrite returns false, calls to Write will throw. If it returns true, Write will write stuff.



Etc.



You can argue all you want about whether the interface is correctly factored (although the .NET Framework design guidelines book has some very interesting discussion on why the design is the way it is) but I don’t think you can really say that it’s a Liskov violation.



-Chris



From: [email protected] [mailto:[email protected]] On Behalf Of Kelly Leahy
Sent: Wednesday, March 09, 2011 6:32 PM
To: [email protected]
Subject: Re: Your Favorite Liskov Violations Examples in .NET



The entire way that streams work is an lsp violation, with read/ canread....

On Mar 10, 2011 2:29 AM, "Chris Bilson" <[email protected]> wrote:
> Favorite? I would't say I like it, but this is the classic:
>
> ICollection<string> a = new [] { "go ahead and try to add something...after
> all, I implement ICollection<>" ];
> a.Add("ha ha!");
>
> --c
>
>
> On Wed, Mar 9, 2011 at 16:46, Aeden Jameson <[email protected]> wrote:
>
>> What are your favorite examples of violations of Liskov in the .NET
>> framework?
>>
>> --
>> Cheers,
>> Aeden
>>
>> Blog : http://aedenjameson.blogspot.com/
>> Linked In: http://www.linkedin.com/in/aedenjameson
>> Blah Blah Blah: http://www.twitter.com/daliful
>> Facebook : http://www.facebook.com/aeden.jameson
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Seattle area Alt.Net" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/altnetseattle?hl=en.
>>
>>
>
> --
> You received this message because you are subscribed to the Google Groups "Seattle area Alt.Net" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to [email protected] . > For more options, visit this group at http://groups.google.com/group/altnetseattle?hl=en .
>

--
You received this message because you are subscribed to the Google Groups "Seattle area Alt.Net" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/altnetseattle?hl=en .

--
You received this message because you are subscribed to the Google Groups "Seattle area Alt.Net" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/altnetseattle?hl=en .

--
You received this message because you are subscribed to the Google Groups "Seattle area Alt.Net" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/altnetseattle?hl=en .

--
You received this message because you are subscribed to the Google Groups "Seattle 
area Alt.Net" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/altnetseattle?hl=en.

Reply via email to