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.