C# 强制开发人员使用特殊类中的字符串
我有一个C# 强制开发人员使用特殊类中的字符串,c#,C#,我有一个ObjectResult,如果发生错误,它将返回一条错误消息。 我希望开发人员不能在其中键入自己的消息;他们应该在一个特殊类中使用一组预先确定的消息字符串中的一个(只是为了管理消息) 例如,我不希望这成为可能: ObjectResult obj = new ObjectResult() {Message = "xxx"}; 开发人员必须编写: ObjectResult obj = new ObjectResult() {Message = MessagesStore.SomeMessa
ObjectResult
,如果发生错误,它将返回一条错误消息。
我希望开发人员不能在其中键入自己的消息;他们应该在一个特殊类中使用一组预先确定的消息字符串中的一个(只是为了管理消息)
例如,我不希望这成为可能:
ObjectResult obj = new ObjectResult() {Message = "xxx"};
开发人员必须编写:
ObjectResult obj = new ObjectResult() {Message = MessagesStore.SomeMessage};
如何实现这样的功能?您可以在ObjectResult类中声明类型为的MessagesStore
enum MessagesStore
{
None,
Error,
ok,
};
您可以在ObjectResult类中声明类型为的MessagesStore
enum MessagesStore
{
None,
Error,
ok,
};
您可以在ObjectResult类中声明类型为的MessagesStore
enum MessagesStore
{
None,
Error,
ok,
};
您可以在ObjectResult类中声明类型为的MessagesStore
enum MessagesStore
{
None,
Error,
ok,
};
我更喜欢这样使用:
public class MessagesStore
{
public class Error
{
public const string Error1= "Error1";
public const string Error2= "Error2";
}
public class Warning
{
public const string Warning1 = "Warning1";
public const string Warning2 = "Warning2";
}
}
然后您可以访问以下消息:
ObjectResult obj = new ObjectResult() {Message = MessagesStore.Error.Error1};
我更喜欢这样使用:
public class MessagesStore
{
public class Error
{
public const string Error1= "Error1";
public const string Error2= "Error2";
}
public class Warning
{
public const string Warning1 = "Warning1";
public const string Warning2 = "Warning2";
}
}
然后您可以访问以下消息:
ObjectResult obj = new ObjectResult() {Message = MessagesStore.Error.Error1};
我更喜欢这样使用:
public class MessagesStore
{
public class Error
{
public const string Error1= "Error1";
public const string Error2= "Error2";
}
public class Warning
{
public const string Warning1 = "Warning1";
public const string Warning2 = "Warning2";
}
}
然后您可以访问以下消息:
ObjectResult obj = new ObjectResult() {Message = MessagesStore.Error.Error1};
我更喜欢这样使用:
public class MessagesStore
{
public class Error
{
public const string Error1= "Error1";
public const string Error2= "Error2";
}
public class Warning
{
public const string Warning1 = "Warning1";
public const string Warning2 = "Warning2";
}
}
然后您可以访问以下消息:
ObjectResult obj = new ObjectResult() {Message = MessagesStore.Error.Error1};
您可以将可用字符串的集合放入
enum
public enum MessageString
{
[Description("Message one")]
Message1,
[Description("Message two")]
Message2,
}
然后更改Message
属性以返回MessageString
类型,或者删除默认构造函数并要求传递MessageString
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
您可以将可用字符串的集合放入
enum
public enum MessageString
{
[Description("Message one")]
Message1,
[Description("Message two")]
Message2,
}
然后更改Message
属性以返回MessageString
类型,或者删除默认构造函数并要求传递MessageString
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
您可以将可用字符串的集合放入
enum
public enum MessageString
{
[Description("Message one")]
Message1,
[Description("Message two")]
Message2,
}
然后更改Message
属性以返回MessageString
类型,或者删除默认构造函数并要求传递MessageString
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
您可以将可用字符串的集合放入
enum
public enum MessageString
{
[Description("Message one")]
Message1,
[Description("Message two")]
Message2,
}
然后更改Message
属性以返回MessageString
类型,或者删除默认构造函数并要求传递MessageString
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
声明枚举并用描述属性修饰条目
public enum MessagesStore
{
[Description("Everything is Ok")]
Ok,
[Description("Everything is not Ok")]
NotOk
}
使用以下扩展方法
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();
}
}
下面是一个用法示例:
var ms = MessagesStore.Ok;
var desc = ms.GetEnumDescription();
描述为“一切正常”声明一个枚举并用描述属性修饰条目
public enum MessagesStore
{
[Description("Everything is Ok")]
Ok,
[Description("Everything is not Ok")]
NotOk
}
使用以下扩展方法
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();
}
}
下面是一个用法示例:
var ms = MessagesStore.Ok;
var desc = ms.GetEnumDescription();
描述为“一切正常”声明一个枚举并用描述属性修饰条目
public enum MessagesStore
{
[Description("Everything is Ok")]
Ok,
[Description("Everything is not Ok")]
NotOk
}
使用以下扩展方法
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();
}
}
下面是一个用法示例:
var ms = MessagesStore.Ok;
var desc = ms.GetEnumDescription();
描述为“一切正常”声明一个枚举并用描述属性修饰条目
public enum MessagesStore
{
[Description("Everything is Ok")]
Ok,
[Description("Everything is not Ok")]
NotOk
}
使用以下扩展方法
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();
}
}
下面是一个用法示例:
var ms = MessagesStore.Ok;
var desc = ms.GetEnumDescription();
desc与be“一切正常”我将组合
字符串和枚举以强制用户使用已指定的文本。这只是略有不同的方法,没有使用属性
:
在ObjectResult
类中添加:
public enum InfoMessages
{
Error1,
Error2,
Warning1,
Warning2
};
然后使用消息编辑ObjectResult
类构造函数
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
然后根据给定的枚举设置正确字符串的方法:
public void SetMessage(InfoMessages message)
{
switch (message)
{
case InfoMessages.Error1: this.Message = "Error message for Error1"; break;
case InfoMessages.Error2: this.Message = "Error message for Error2"; break;
// ...
}
}
我将组合字符串
和枚举
,以强制用户使用已经指定的文本。这只是略有不同的方法,没有使用属性
:
在ObjectResult
类中添加:
public enum InfoMessages
{
Error1,
Error2,
Warning1,
Warning2
};
然后使用消息编辑ObjectResult
类构造函数
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
然后根据给定的枚举设置正确字符串的方法:
public void SetMessage(InfoMessages message)
{
switch (message)
{
case InfoMessages.Error1: this.Message = "Error message for Error1"; break;
case InfoMessages.Error2: this.Message = "Error message for Error2"; break;
// ...
}
}
我将组合字符串
和枚举
,以强制用户使用已经指定的文本。这只是略有不同的方法,没有使用属性
:
在ObjectResult
类中添加:
public enum InfoMessages
{
Error1,
Error2,
Warning1,
Warning2
};
然后使用消息编辑ObjectResult
类构造函数
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
然后根据给定的枚举设置正确字符串的方法:
public void SetMessage(InfoMessages message)
{
switch (message)
{
case InfoMessages.Error1: this.Message = "Error message for Error1"; break;
case InfoMessages.Error2: this.Message = "Error message for Error2"; break;
// ...
}
}
我将组合字符串
和枚举
,以强制用户使用已经指定的文本。这只是略有不同的方法,没有使用属性
:
在ObjectResult
类中添加:
public enum InfoMessages
{
Error1,
Error2,
Warning1,
Warning2
};
然后使用消息编辑ObjectResult
类构造函数
参数:
public class ObjectResult
{
public MessageString Message { get; set;}
}
public class ObjectResult
{
public string Message { get; private set;}
public ObjectResult(MessageString message)
{
Message = message.GetDescription();
}
}
public ObjectResult(InfoMessages message)
{
SetMessage(message);
}
然后根据给定的枚举设置正确字符串的方法:
public void SetMessage(InfoMessages message)
{
switch (message)
{
case InfoMessages.Error1: this.Message = "Error message for Error1"; break;
case InfoMessages.Error2: this.Message = "Error message for Error2"; break;
// ...
}
}
自定义类是一个更好的主意。枚举不能保存字符串值+1@LolCoder. 我们可以像这样访问MessagesStore
类而不声明它是静态的吗?@LolCoder consts是存储字符串的好方法,但这不能解决t4nhpt的问题,因为你仍然可以分配任何你想要的Message
@Dima:如果我误解了这个问题,很抱歉。但从我的分析来看,OPs只是想访问来自特殊类的消息(保存所有消息),而不是直接内联消息,对吗?@LolCoder再次阅读了这个问题,看起来我可能错了:)自定义类是一个更好的主意。枚举不能保存字符串值+1@LolCoder. 我们可以像这样访问MessagesStore
类而不声明它是静态的吗?@LolCoder consts是存储字符串的好方法,但这不能解决t4nhpt的问题,因为你仍然可以分配任何你想要的Message
@Dima:如果我误解了这个问题,很抱歉。但从我的分析来看,OPs只是想访问来自特殊类的消息(保存所有消息),而不是直接内联消息,对吗?@LolCoder再次阅读了这个问题,看起来我可能错了:)自定义类是一个更好的主意。枚举不能保存字符串值+1@LolCoder. 没有declari,我们可以像这样访问MessagesStore
类吗