2

I need to make an adapter class.

trip.Resource is an enum named ModalityResource.

transportOrderTrip.ModalityResource is a string.

if(Enum.IsDefined(typeof(ModalityResource), transportOrderTrip.ModalityResource))
    trip.Resource = Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);

Possible values for ModalityResource here:

 public enum ModalityResource { NONE, CHASSIS, TRAILER }

The error i get is this one: Cannot implicitly convert type 'object' to 'ModalityResource'. Anyone might know what is wrong?

Edit: Never mind, was bit confused.

  trip.Resource = (ModalityResource) Enum.Parse(typeof (Shared.Interfaces.ModalityResource), transportOrderTrip.ModalityResource, true);
Kjell Derous
  • 502
  • 1
  • 6
  • 19

3 Answers3

2

You've to cast the result of Enum.Parse as ModalityResource. In .NET 4 or newer you can also use the generic overloads of the function.

trip.Resource = (ModalityResource)Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);

See also

http://msdn.microsoft.com/en-us/library/dd783499.aspx

Felix K.
  • 6,201
  • 2
  • 38
  • 71
1

You need as cast.

Enum.Parse method returns object

change your code to following

(ModalityResource)Enum.Parse(typeof(ModalityResource), transportOrderTrip.ModalityResource, true);
Sriram Sakthivel
  • 72,067
  • 7
  • 111
  • 189
1

Well you would need to cast it to the required Enum type as the return type is object

(ModalityResource) Enum.Parse(typeof(ModalityResource), 
                             transportOrderTrip.ModalityResource, true);

On Why object is returned instead of an enum value

Community
  • 1
  • 1
V4Vendetta
  • 37,194
  • 9
  • 78
  • 82