my list of wanted features in .NET

N

not_a_commie

Here is a list of features I've wanted in .NET as pulled from my lab
notebook. If some of them are already there, maybe somebody could point
them out to me. If you have an opinion positive or negative on any, I'd
like to hear it. Thanks. They are in no particular order

1. GDI+::Graphics -> draw a super ellipse
2. Add an attribute(s) similar to Obsolete for marking Dangerous,
Advanced, or requiring Prerequisites on functions.
3. Add functions for Priority to PropertyInfo
4. Add more complex post-build event handling for multi-project
coordination
5. Have a built in collection that represents a sparse 2d array.
6. Add some basic generics for tuples of 2,3,4; I end up way overusing
the KeyValuePair
7. GDI+::Graphics -> Add an angle parameter overload to the draw/fill
functions that so that I don't have to call translate and rotate when I
want that functionality.
8. Add an IDE option to find all inheritors (actually, there is a lot
of Resharper functionality that would be nice to have built in but if
you could steal just a few of the searches...)
9. Add an IDE option to sync the current file to the solution and class
views (my projects have thousands of files in them)
10. Make the custom drawn trees and properties easier (I don't know
what specifics to add for this other than they are a bit of a pain
currently; I needed a tree that had dual selection: the leaf and the
current root node; that was a royal pain and I never could get double
buffering on it)
11. Add an editable ListView
12. Add intersection functions for generic collections
13. GDI+::Graphics -> Point, Rectangle should have operator overloads
for add/subtract/etc.
14. GDI+::Graphics -> LinearGradient should handle negative values in
width, height
15. I need an "is namespace" functionality
16. ICloneable should be a generic
17. I need a "where is primitive"
18. I think a "where is List<>" (aka unspecified type) could be useful
19. PropertyValueChanged event should have a way to revert the value
20. Add directory support to the GZIP stuff
21. IDE search of other property references on the same object
22. Fix the double buffering on transparent controls
23. Add some way to specify multiple namespaces for a single object
declaration
24. GDI+::Graphics -> There should be a way to build a Region from a
(alpha) bitmask
25. GDI+::Graphics -> Add a way to inflate a closed graphics path
 
M

Mattias Sjögren

2. Add an attribute(s) similar to Obsolete for marking Dangerous,
Advanced, or requiring Prerequisites on functions.

Well there's the EditorBrowsable attribute for hiding "advanced"
members in the IDE.
3. Add functions for Priority to PropertyInfo

And what would be the meaning of the priority of a property?
4. Add more complex post-build event handling for multi-project
coordination

MSBuild is very extensible.
11. Add an editable ListView

Isn't the existing ListView editable?
15. I need an "is namespace" functionality

Where? In the IDE, class libraries or in a language? What would the
feature do?
16. ICloneable should be a generic

That doesn't solve the bigger problem of not defining whether to
perform a deep or shallow clone.
17. I need a "where is primitive"

You mean to determine if a type is primitive? There's Type.IsPrimitive
if that's what you're looking for.
18. I think a "where is List<>" (aka unspecified type) could be useful

You can do that with reflection.
21. IDE search of other property references on the same object

I don't understand what you mean by this.
23. Add some way to specify multiple namespaces for a single object
declaration

Not sure what you mean here either.


Mattias
 
K

Keith Patrick

Also, VS.Net currently (and at least as far back as 2002) has an option
called "Track Active Item in Solution Explorer" that performs the file part
of #9 (although it does not highlight the current class; in fact, VS's Class
View is something I find only useful insofar as it shows me when I've
misnamed some namespaces, so I never even need to track by class)
 
N

not_a_commie

3. Add functions for Priority to PropertyInfo
And what would be the meaning of the priority of a property?

As it was a few months back I wrote that down, I'm not sure I remember
the issue entirely. I basically wanted a clean way to handle multiple
attributes of the same type where only one was expected.
GetCustomAttributes returns all of a given type. I just use the first
one it returns. Is that common?
MSBuild is very extensible.
I confess that I want Nant functionality built-in. Handling the
dependencies for my post-build nant script is a pain and making it run
always (which I currently do) slows things down.
Isn't the existing ListView editable?
I think I meant text-editing in the cells.
Where? In the IDE, class libraries or in a language? What would the
feature do?
I want a runtime operator that tells me if an object is in a namespace.
The function would be similar to the IsInheritableFrom function.
That doesn't solve the bigger problem of not defining whether to
perform a deep or shallow clone.
True. Tack those onto the list.
You mean to determine if a type is primitive? There's Type.IsPrimitive
if that's what you're looking for.
By "where" I mean the C# keyword "where". Type.IsPrimitive doesn't help
me with restricting my generics.
You can do that with reflection.
By "where" I mean the C# keyword "where". I guess it is rare that you
insist something be inherited from or an instance of List<> rather than
IList, but maybe that would be useful. Actually, maybe it would be
useful to force that a generic be an inheritor in general.
I don't understand what you mean by this.
The FindReferences function in the IDE can be called on a private
member's function reference, but not limited to references of that
private member.
Not sure what you mean here either.
namespace bob, larry {
class blah {}
}

Elsewhere you would (possibly) need to specify the full namespace to
avoid ambiguous reference. I think it would be useful for refactoring
projects that are referenced in multiple solutions.
 
S

schneider

1. What's special about the Super ellipse? If its quality, then you can
specify that now, defaults to Low..
2. You can make you own attributes and check for them.
3. ?
4. I can probably be done now, but some things could be simpler I agree..
5. Ok, could build one but is nice if there is a standard.
10. Third party is probably the way to go here.
13. Agree.
19. Agree.
21. Agree. I usually rename the object and look at the error list.
23. Gray area, Why not make a separate namespace and have them all ref the
new namespace?
24. I think this is possible. Try the Drawing newsgroup.
 
S

schneider

11. I usualy use a grid here.
15. Reflection will do this.
23. You can have a namespace as such: MarcoSoft.Products.XControl
 
N

not_a_commie

1. What's special about the Super ellipse? If its quality, then you can
specify that now, defaults to Low..
Super ellipses and rectangles with rounded corners are useful in
drawing flow chart-type graphs.
4. I can probably be done now, but some things could be simpler I agree..
5. Ok, could build one but is nice if there is a standard.
24. I think this is possible. Try the Drawing newsgroup.
I think a lot of these things can be done now. I just think they could
be easier.
10. Third party is probably the way to go here.
Know any third-party root-and-leaf select tree views?
13. Agree.
19. Agree.
21. Agree. I usually rename the object and look at the error list.
23. Gray area, Why not make a separate namespace and have them all ref the
new namespace?
I don't want to break old solutions that rely on a specific namespace.
 
N

not_a_commie

Keith said:
Also, VS.Net currently (and at least as far back as 2002) has an option
called "Track Active Item in Solution Explorer" that performs the file part
of #9
Thanks! I feel better about life already.

Class View is something I find only useful insofar as it shows me when I've
misnamed some namespaces, so I never even need to track by class)
Class view is quite useful for COM objects, but I usually don't use it
otherwise.
 
K

Keith Patrick

3. Add functions for Priority to PropertyInfo
As it was a few months back I wrote that down, I'm not sure I remember
the issue entirely. I basically wanted a clean way to handle multiple
attributes of the same type where only one was expected.
GetCustomAttributes returns all of a given type. I just use the first
one it returns. Is that common?

If it's your attribute, set the AttributeUsage to be AllowMultiple=false.
That's the most common solution. The other one is to break out of your
foreach after the first iteration.
I think I meant text-editing in the cells.
..Net 3.0 (Windows Presentation Foundation) can do this (it's styling
features are obscenely flexible)
I want a runtime operator that tells me if an object is in a namespace.
The function would be similar to the IsInheritableFrom function.
How about: myObj.GetType().FullName.Equals(String.Format("{0}.{1}",
myTestNameSpace, myObj.GetType().Name)) ? Not easy-to-read, but it should
do in a jam until MS comes out with the equivalent to String.IsNullOrEmpty()

namespace bob, larry {
class blah {}
}
I'm going to get all philosophical and say "since OO mimics the real world,
and the Pauli exclusion principle says that two objects cannot occupy the
same space (and vice versa), that shouldn't be possible." However, throwing
that aside, what is it you want to achieve by doing that (I'm not seeing the
refactoring benefit). You *may* want to check out the "using" statement
(for aliasing namespaces, not referencing them) to see if that gets you what
you're looking for
 
N

not_a_commie

2. Add an attribute(s) similar to Obsolete for marking Dangerous,
Well there's the EditorBrowsable attribute for hiding "advanced"
members in the IDE.

Thanks for the information on EditorBrowsable. That is what I wanted
with the Advanced type. I still think MS should expand that list to
include Dangerous, NeedsUIThread, and others.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top