|
Apologies, I meant GetFullPath.
Still, I don't think that deserved a 1 (not from you, obviously, but some random guy)
Cheers,
Vikram.
The hands that help are holier than the lips that pray.
|
|
|
|
|
That was me... I hit the "not helpful" button thinking it was separate from the normal rating/voting buttons on the bottom right of the message.
Sorry.
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
Never mind
As you've probably found out, you can change your votes now with the .net version of CP.
Cheers,
Vikram.
The hands that help are holier than the lips that pray.
|
|
|
|
|
Dear all,
I want to create a mp3 player use Windows Media Player control,but I cann't find any reference assembly in my Visual Studio 2008 ,What should I do?
Thanks very much.
|
|
|
|
|
Dear developers,
my managed C#-Code calls an unmanaged C++-Class-Method which allocates an array of integers (int *pInt = new int [5])and returns a reference to this array.
How can I use this reference in my C#-Code without copying the values in the array.
So far I didn't find any solution.
Kind regards
|
|
|
|
|
Hi,
AFAIK you can't. The only way I am aware of that avoids copying is by allocating the array
on the managed side, pass it to the unmanaged side, and let it fill it there.
The rationale is the managed metadata needs to be added to the raw data, and .NET is unable
to do that for existing data.
|
|
|
|
|
seems reasonable what you say
Thanks ! !
|
|
|
|
|
I have a generic method which looks for a specific attribute and returns value of "Text" property. My attribute is named "DetailsAttribute". Here is my generic method
public static string GetDescription<EnumType>(EnumType enumType) {
string description = string.Empty;
Type type = enumType.GetType();
if (type != null) {
FieldInfo info = type.GetField(enumType.ToString());
if (info != null) {
DetailsAttribute[] attributes = info.GetCustomAttributes(typeof(DetailsAttribute), false) as DetailsAttribute[];
if (attributes != null && attributes.Length > 0)
description = attributes[0].Text;
}
}
return description;
} This works fine. But I am looking for applying a constraint to the generic parameter "enumType" which should allow only enum types. I am not able to write something like
public static string GetDescription<EnumType>(EnumType enumType) : where enumType : enum
How can I set such kind of restriction ? Also is there any better method than what I provided to retrieve attribute values from fields ?
any help would be appreciated.
|
|
|
|
|
N a v a n e e t h wrote: How can I set such kind of restriction ?
You cant. Best will be to have where EnumType : struct and have a check inside the method.
|
|
|
|
|
Yeah, I guessed it. Thanks leppie. Do you think there is any better method to take the attribute value other than what I did ?
|
|
|
|
|
Maybe you should check it by yourself.
Just like this:
public static string GetDescription<enumtype>(EnumType enumType) {
string description = string.Empty;
Type type = enumType.GetType();
Type typParent=type.BaseType;
bool blIsEnum=false;
while(typParent!=null)
{
if(typParent==typeof(System.Enum))
{
blIsEnum=true;
break;
}
typParent=typParent.BaseType;
}
if(blIsEnum==false)
{
throw new Exception("Haha,game over!^_^");
}
......
|
|
|
|
|
Thanks.
xibeifeijian wrote: Type type = enumType.GetType();
Type typParent=type.BaseType;
bool blIsEnum=false;
while(typParent!=null)
Why not make it simple like
if (enumType.GetType() != typeof(System.Enum))
throw new InvalidOperationException("An enum is expected"); or am I missing something ?
|
|
|
|
|
Ha,Sorry,my error.
As the enum type cann't inherit,so you can judge it in this way:
if (enumType.GetType().BaseType != typeof(System.Enum))
You must use basetype to judge them,because the son type won't equals the parent type.System.Enum is a root type for all the enum types.
|
|
|
|
|
Ya.. BaseType is required. Thanks
|
|
|
|
|
How about:
enumType is Enum ...
You guys certainly like to do things the hard way!
|
|
|
|
|
leppie wrote: enumType is Enum
Looks simple, but I cannot make it working. AFAIK, BaseType checking is required. When you use is , it throws exception for enum types too.
|
|
|
|
|
N a v a n e e t h wrote: Looks simple, but I cannot make it working. AFAIK, BaseType checking is required. When you use is, it throws exception for enum types too.
Then you are doing something wrong!
The following prints 'Friday':
object f = DayOfWeek.Friday;
if (f is Enum)
{
Console.WriteLine(f);
}
else
{
Console.WriteLine("Not enum");
}
|
|
|
|
|
Does no one read my articles?
I use:
System.Type basetype = typeof(T) ;
if ( !basetype.IsEnum )
{
throw ( new System.ArgumentException ( "T must be an Enum" ) ) ;
}
I suspect that all that checking for null in your example is needless.
And please read this[^].
|
|
|
|
|
Haha ,this is the best way !
|
|
|
|
|
PIEBALDconsult wrote: Does no one read my articles?
Sorry, I just missed it.
PIEBALDconsult wrote: I suspect that all that checking for null in your example is needless.
I am not getting you fully. Are you saying that the methods I used to get "FieldInfo", attributes will never return NULL ?
|
|
|
|
|
Correct. GetType() won't and GetCustomAttributes won't, GetField won't because you're passing in a known field name (in this case).
modified on Tuesday, July 8, 2008 12:41 AM
|
|
|
|
|
Thanks. I will remove the NULL checking. Thanks
|
|
|
|
|
PIEBALDconsult wrote: Does no one read my articles?
Hmmm...I missed that one somehow. Interesting approach to things. Did you see my article[^]? I have a similar GetDescription method.
Scott Dorman Microsoft® MVP - Visual C# | MCPD
President - Tampa Bay IASA
[ Blog][ Articles][ Forum Guidelines] Hey, hey, hey. Don't be mean. We don't have to be mean because, remember, no matter where you go, there you are. - Buckaroo Banzai
|
|
|
|
|
I probably did, I definitely remember the picture of someone blocking the Green Monster.
|
|
|
|
|
You can't apply a generic constraint on an enum type. The best you can get is struct. Also, take a look at this article[^] for a way to work with enums and a description attribute.
Scott Dorman Microsoft® MVP - Visual C# | MCPD
President - Tampa Bay IASA
[ Blog][ Articles][ Forum Guidelines] Hey, hey, hey. Don't be mean. We don't have to be mean because, remember, no matter where you go, there you are. - Buckaroo Banzai
|
|
|
|