如果我在c#中声明一个类,我可以设置字符串长度等属性吗?设置属性例如字符串长度
例如说我的课是:
public class MyClass
{
public string SomeString1 {get; set;}
public string AnotherString2 {get; set;}
}
有没有办法指定SomeString1只有x个字符长?
如果我在c#中声明一个类,我可以设置字符串长度等属性吗?设置属性例如字符串长度
例如说我的课是:
public class MyClass
{
public string SomeString1 {get; set;}
public string AnotherString2 {get; set;}
}
有没有办法指定SomeString1只有x个字符长?
您可以使用在.NET DataAnnotations类StringLengthAttribute:
[StringLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
public string YourString { get; set; }
如果你在MVC工作,这些DataAnnotations将在传入的请求验证以及错误信息可以在相关的自动显示视图。
如果你没有在MVC工作,或者只是想验证一个类实例的ad-hoc,则可以使用Validator类:How to manually validate a model with attributes?
取决于谁打算收集信息。例如。核心运行时不限制字符串长度,不管附加哪个属性。 –
仅当他们使用侦听DataAnnotations的技术时才有用,否则回答良好 – MikeT
如我的答案中所述,Validator类可用于> = .net 4中的临时验证。 –
你所要求的是验证,并有几种不同在.NET Framework
一些例子是IDataErrorInfo,INotifyDataErrorInfo和ValidationRule
可用的验证路线哪一个更适合你取决于你在做什么
WPF被设计为自动包括这些在意见,提供了诸如here一些很好的例子,但他们的工作也同样适用于手动验证测试
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;
}
}
,那么你会怎么做
MyClass node = new MyClass(xmlNode);
if(node.IsValid)
{
//use class
}
else
{
display(node.Error)
}
听起来像一个工作对于AOP ... –
听起来像[XY问题](http://xyproblem.info/) –
如果我尝试放置*更长的字符串,您必须决定执行什么操作。它会是一个例外吗?该修剪线吗?还有别的吗? –