C# 设置属性,例如字符串的长度

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

如果我在c#中声明一个类,我可以设置诸如字符串长度之类的属性吗

e、 g.假设我的班级是:

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或自动/手动更正