c# - Force developer to use string from special class -
i have objectresult
return error message if error occurs. i’d developer not able type own message this; should have use 1 of set of predetermined message string in special class (just manage message).
for example, don’t want possible:
objectresult obj = new objectresult() {message = "xxx"};
a developer should have write:
objectresult obj = new objectresult() {message = messagesstore.somemessage};
how can implement this?
declare enum , decorate entries description attributes
public enum messagesstore { [description("everything ok")] ok, [description("everything not ok")] notok }
use following extension method
public static class enumextensions { public static string getenumdescription(this enum value) { var fi = value.gettype().getfield(value.tostring()); var attributes = (descriptionattribute[])fi.getcustomattributes( typeof(descriptionattribute), false); if (attributes != null && attributes.length > 0) { return attributes[0].description; } return value.tostring(); } }
and, example of usage:
var ms = messagesstore.ok; var desc = ms.getenumdescription();
desc "everything ok"
Comments
Post a Comment