> I've been using C# for quite awhile now, but one feature that I wish was > available in the language is support for Design by Contract: > automatically-enforced preconditions and postconditions on functions, and > invariants on classes. > ... > Does anyone have an idea about how this could be done in a reasonable > fashion? If so, would anyone be willing to help on the project?
Hi Stephen, I've thought about this a few times and even tried hacking some rudimentary DBC support into Mono using attributes. The difficulty in this depends on what you want out of DBC. I was going for something that would see contract violations at compile time (which turned out to be way over my head, so I didn't get far). Just adding assertions automatically would be much easier, or even easy. Adding pre/post-condition assertions would just mean going into the parts of mcs for methods and properties, looping through the attributes on the method/parameters, and adding some object creations (to instantiate the attributes) and method invocations (to have the attribute perform the check) in the generated IL. Not much, really. Getting something more powerful I found to be a lot harder (and I learned from this why some people like languages with immutable variables). - Josh Tauberer _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
