RegisteredUser 实现 IDataErrorInfo 这个接口问题:不理解这种表达方式,this代表什么, 后边用[]括起来又是什么意思 , 请解释一下
public string this[string propName]    public partial class RegisteredUser:IDataErrorInfo
    {
        public string this[string propName]
        {
            get
            {
                if (propName == "UserName" && string.IsNullOrEmpty(LoginName))
                    return "用户登录名不能为空";
                return string.Empty;
            }
        }        public string Error
        {
            get { return string.Empty; }
        }
    }using System;
using System.Reflection;namespace System.ComponentModel
{
    // 摘要:
    //     提供功能,该功能提供用户界面可以绑定的自定义错误信息。
    public interface IDataErrorInfo
    {
        // 摘要:
        //     获取指示对象何处出错的错误信息。
        //
        // 返回结果:
        //     指示对象何处出错的错误信息。默认值为空字符串 ("")。
        string Error { get; }        // 摘要:
        //     获取具有给定名称的属性的错误信息。
        //
        // 参数:
        //   columnName:
        //     要获取其错误信息的属性的名称。
        //
        // 返回结果:
        //     该属性的错误信息。默认值为空字符串 ("")。
        string this[string columnName] { get; }
    }
}

解决方案 »

  1.   

    本帖最后由 net_lover 于 2012-10-04 08:45:38 编辑
      

  2.   


    谢谢,我看了
    http://msdn.microsoft.com/zh-cn/library/6x16t2tx(v=vs.80).aspx
    大概了解什么事索引器。
    还有一点不明白??                if (propName == "UserName" && string.IsNullOrEmpty(LoginName))
                        return "用户登录名不能为空";LoginName 这个变量没有申明?  我把鼠标移上去,提示: string RegisteredUser.LoginName
      

  3.   

    其它地方也没有看到定义,再查找,就跑到designer.cs里边去了
      

  4.   

    public partial class RegisteredUser:IDataErrorInfopartial 的意思就是部分,也就是这里只是类定义的一部分,另一个部分在*.designer.cs中。LoginName应该在后面的文件里。*.designer.cs里包含Designer中的内容,像拖个控件到Form上,就会修改*.designer.cs文件,因此自己写的代码不要放在里面。
      

  5.   


    谢谢,那段代码好像是根据数据库生成的。    另外问下,我在服务器资源管理器链接一个数据库后,怎么生成如下代码?[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.RegisteredUsers")]
    public partial class RegisteredUser : INotifyPropertyChanging, INotifyPropertyChanged
    {

    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

    private string _LoginName;

    private string _Passwd;

    private System.DateTime _RegDate;

    private System.Nullable<System.DateTime> _LastLoginTime;

    ......