Today, I faced one issue with Enum.TryParse
or Enum.Parse
method. I was trying to parse string
value to Enum
but Enum.TryParse
/Enum.Parse
method was always giving true
value for string
which is not member of enum
.
public enum FieldAccessType
{
ReadOnly = 1,
Add = 2,
Modify = 4,
AddModify = 6
}
I want to convert string
value, say “30
″ to enum
type that is not member of enum
and conversion should fail, but I always get true value return enum.TryParse
method which is surprising. I don’t know why it does not behave as per expectation.
FieldAccessType type;
bool res=Enum.TryParse("20",out type );
Assert.IsFalse(res);
I found the MSDN documentation for Enum.TryParse
/Enum.Parse
and found the following lines:
“If value is the string representation of an integer that does not represent an underlying value of the TEnum enumeration, the method returns an enumeration member whose underlying value is value converted to an integral type. If this behavior is undesirable, call the IsDefined method to ensure that a particular string representation of an integer is actually a member of TEnum.”
Below is code which I corrected later:
FieldAccessType fieldAccessType;
int intEnumValue;
if (Int32.TryParse(Value, out intEnumValue))
{
if (Enum.IsDefined(typeof (FieldAccessType), intEnumValue))
return (FieldAccessType) intEnumValue;
}
Enum.IsDefined
to verify that the value you parsed actually exists in this particular enum
.
I hope this trick will help you.

• Solution Architect /Principle Lead Developer with 12 years of IT experience with more emphasize on Capital Domain and Investment banking domain.
• Strong experience in Continuous Integration, Delivery and DevOps solutions.
• Strong experience in drafting solutions, stakeholder communications and risk management.
• Proved strong coding and designing skills with agile approaches (TDD, XP framework, Pair Programming).
• Delivered many projects with involvement from inception to delivery phase.
• Strong experience in high performance, multithreaded, low latency applications.
• Ability to communicate with the business and technical stake holders effectively.
• Have extensive experience in Capital Market Domain: Front Office & BackOffice (Algorithm Trading tools, messaging framework, Enterprise bus, integration of FIX APIs and many trading APIs).
• Functional knowledge of Portfolio/Wealth Management, Equities, Fixed Income, Derivatives, Forex.
• Practical knowledge of building and practicing agile delivery methodologies (SCRUM, TDD, Kanban).
Technical Skills
• Architectural: Solution Design, Architectural Presentations (Logical, Component, Physical, UML diagrams)
• Languages: C#, C++
• Server Technologies: WCF, Web API,
• Middle Ware: ActiveMQ, RabbitMQ, Enterprise Service Bus
• UI Technologies: Winforms and WPF
• Web Technologies: Asp.Net Mvc, KnockOutJS, JQuery, Advance Java Scripts Concepts
• Databases: Sql Server 2008 +, MySQL
• Tools/Frameworks: TFS, SVN, NUnit, Rhino Mocks, Unity, NAnt, QuickFix/n, Nhibernate, LINQ, JIRA,
Functional Skills
• Wealth Management System, Trade Life Cycle, Trading Components and their integrations
• Working knowledge of Stocks, Bonds, CFDs,Forex, Futures and Options
• Pricing Systems, Market Data Management,
• BackOffice Processes : Settlement Processes, Netting, Tax, Commissions, Corporate Actions Handling,
• Reporting Solutions : OLTP and OLAP Data model designing
• FIX Engine implementation and integration