C# 设置属性,例如字符串的长度
如果我在c#中声明一个类,我可以设置诸如字符串长度之类的属性吗 e、 g.假设我的班级是:C# 设置属性,例如字符串的长度,c#,class,C#,Class,如果我在c#中声明一个类,我可以设置诸如字符串长度之类的属性吗 e、 g.假设我的班级是: public class MyClass { public string SomeString1 {get; set;} public string AnotherString2 {get; set;} } 有没有办法指定SomeString1只有x个字符长?您可以在.NET DataAnnotations类中使用: [StringLength(40, ErrorMessage = "N
public class MyClass
{
public string SomeString1 {get; set;}
public string AnotherString2 {get; set;}
}
有没有办法指定SomeString1只有x个字符长?您可以在.NET DataAnnotations类中使用:
[StringLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
public string YourString { get; set; }
如果您在MVC中工作,这些数据注释将在传入的请求上进行验证,并且任何错误消息都可以自动显示在相关视图中
如果您不是在MVC中工作,或者只是想临时验证类实例,则可以使用Validator类:您可以在.NET DataAnnotations类中使用:
[StringLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
public string YourString { get; set; }
如果您在MVC中工作,这些数据注释将在传入的请求上进行验证,并且任何错误消息都可以自动显示在相关视图中
如果您不是在MVC中工作,或者只是想临时验证一个类实例,那么可以使用Validator类:您需要的是验证,在.net framework中有几种不同的验证路径可用 例如,和 哪一个适合你取决于你在做什么 WPF的设计目的是在视图中自动包含这些内容,因此提供了一些很好的示例,例如,但它们在手动验证测试中同样有效
public class MyClass: IDataErrorInfo
{
public string SomeString1 { get; set; }
public string AnotherString2 { get; set; }
public bool IsValid
=> string.IsNullOrWhiteSpace(Error);
public string Error
=> this["All"];
public string this[string field]
{
get
{
string err = "";
if (field == "All" || "SomeString1" == field)
{
if (SomeString1.Length > 15)
err += "SomeString1 > 15";
if (SomeString1.Length < 5)
err += "SomeString1 < 5";
}
if (field == "All" || nameof(AnotherString2) == field )
{
err += StringLenthRule(AnotherString2, nameof(AnotherString2), 30, 20);
}
return err;
}
}
private string StringLenthRule(string str, string prop,int max, int min)
{
string err = "";
if (str.Length > max)
err += $"{prop} > {max}\n";
if (str.Length < min)
err += $"{prop} < {min}\n";
return err;
}
}
您需要的是验证,在.net framework中有几种不同的验证路径 例如,和 哪一个适合你取决于你在做什么 WPF的设计目的是在视图中自动包含这些内容,因此提供了一些很好的示例,例如,但它们在手动验证测试中同样有效
public class MyClass: IDataErrorInfo
{
public string SomeString1 { get; set; }
public string AnotherString2 { get; set; }
public bool IsValid
=> string.IsNullOrWhiteSpace(Error);
public string Error
=> this["All"];
public string this[string field]
{
get
{
string err = "";
if (field == "All" || "SomeString1" == field)
{
if (SomeString1.Length > 15)
err += "SomeString1 > 15";
if (SomeString1.Length < 5)
err += "SomeString1 < 5";
}
if (field == "All" || nameof(AnotherString2) == field )
{
err += StringLenthRule(AnotherString2, nameof(AnotherString2), 30, 20);
}
return err;
}
}
private string StringLenthRule(string str, string prop,int max, int min)
{
string err = "";
if (str.Length > max)
err += $"{prop} > {max}\n";
if (str.Length < min)
err += $"{prop} < {min}\n";
return err;
}
}
听起来像是AOP的工作……听起来像是一个问题,如果我尝试放置更长的字符串,您必须决定执行什么操作。这是例外吗?绳子要修剪吗?还有什么?听起来像是AOP的工作…听起来像是一个问题,如果我尝试放置更长的字符串,你必须决定应该执行什么操作。这是例外吗?绳子要修剪吗?还有什么?很大程度上取决于谁打算收集信息。例如,核心运行时不限制字符串长度,无论附加哪个属性。仅当他们使用侦听数据批注的技术时才有用,但在其他方面效果良好。正如我的回答中所述,Validator类可用于>=.net 4中的特殊验证。这在很大程度上取决于打算收集信息的人。例如,无论附加哪个属性,核心运行时都不会限制字符串长度。只有在使用侦听数据批注的技术时才有用,但在其他方面效果良好。如我的回答中所述,Validator类可用于>=.net 4中的特殊验证。谢谢。上下文是一个web服务,它将解析xml文件,并将每个节点加载到数据库文件中。所以我知道我需要自己验证每个节点。通常的方法是将数据加载到类中,然后使用
public bool IsValid=>string.IsNullOrWhiteSpace(IDataErrorInfo.Error)检查有效性
这将告诉您该类是否有效,是否无效。错误属性将识别问题,您可以使用它拒绝xml或自动/手动更正谢谢。上下文是一个web服务,它将解析xml文件,并将每个节点加载到数据库文件中。所以我知道我需要自己验证每个节点。通常的方法是将数据加载到类中,然后使用public bool IsValid=>string.IsNullOrWhiteSpace(IDataErrorInfo.Error)检查有效性
这将告诉您该类是否有效,是否无效。错误属性将识别问题,您可以使用它拒绝xml或自动/手动更正