Dig*_*805 -3 c# model-view-controller
我正在编写我的第一个MVC应用程序,并且正在创建一个新的MembershipProvider但是遇到了一些编译错误,这些错误在这个过程中是完全错误的.这是我的代码:
public class ProfileProvider : MembershipProvider
{
protected NameValueCollection Config = null;
protected new String Name = null;
protected String _PasswordStrengthRegularExpression = "";
protected int _MinRequiredNonAlphanumericCharacters = 0;
protected int _MinRequiredPasswordLength = 0;
protected String _PasswordFormat = "";
protected Boolean _RequiresUniqueEmail = false;
protected int _PasswordAttemptWindow = 0;
protected int _MaxInvalidPasswordAttempts = 0;
protected String _ApplicationName = "";
protected Boolean _RequiresQuestionAndAnswer = false;
protected Boolean _EnabledPasswordReset = false;
protected Boolean _EnablePasswordRetrieval = false;
protected new String PasswordStrengthRegularExpression
{
get
{
return this._PasswordStrengthRegularExpression;
}
set
{
this._PasswordStrengthRegularExpression = value;
}
}
public new int MinRequiredNonAlphanumericCharacters
{
get
{
return this._MinRequiredNonAlphanumericCharacters;
}
set
{
this._MinRequiredNonAlphanumericCharacters = value;
}
}
public new int MinRequiredPasswordLength
{
get
{
return _MinRequiredPasswordLength;
}
set
{
this._MinRequiredPasswordLength = value;
}
}
public new String PasswordFormat
{
get
{
return this._PasswordFormat;
}
set
{
this._PasswordFormat = value;
}
}
public new Boolean RequiresUniqueEmail
{
get
{
return _RequiresUniqueEmail;
}
set
{
this._RequiresUniqueEmail = value;
}
}
public new int PasswordAttemptWindow
{
get
{
return this._PasswordAttemptWindow;
}
set
{
this._PasswordAttemptWindow = value;
}
}
public new int MaxInvalidPasswordAttempts
{
get
{
return this._MaxInvalidPasswordAttempts;
}
set
{
this._MaxInvalidPasswordAttempts = value;
}
}
public new String ApplicationName
{
get
{
return this._ApplicationName;
}
set
{
this._ApplicationName = value;
}
}
public new Boolean RequiresQuestionAndAnswer
{
get
{
return this._RequiresQuestionAndAnswer;
}
set
{
this._RequiresQuestionAndAnswer = value;
}
}
public new Boolean EnablePasswordReset
{
get
{
return this._EnabledPasswordReset;
}
set
{
this._EnabledPasswordReset = value;
}
}
public new Boolean EnablePasswordRetrieval
{
get
{
return this._EnablePasswordRetrieval;
}
set
{
this._EnablePasswordRetrieval = value;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的编译错误:
Error 5 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.RequiresUniqueEmail.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 10 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.RequiresQuestionAndAnswer.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 1 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.PasswordStrengthRegularExpression.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 4 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.PasswordFormat.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 6 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.PasswordAttemptWindow.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 3 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.MinRequiredPasswordLength.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 2 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.MinRequiredNonAlphanumericCharacters.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 7 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.MaxInvalidPasswordAttempts.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 12 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.EnablePasswordRetrieval.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 11 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.EnablePasswordReset.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 8 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.ApplicationName.set' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 9 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.ApplicationName.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Run Code Online (Sandbox Code Playgroud)
这些错误对我有意义; 就像'嘿假,你需要这些东西',但问题的事实是我确实添加了所说的东西.任何想法都表示赞赏.提前谢谢.
:::编辑:::
忘记提到我试图用'覆盖'替换'新'并最终在类似的船上.以下是我对此更改的错误:
Error 7 'EmptyMVC.Controllers.ProfileProvider.RequiresUniqueEmail.set': cannot override because 'System.Web.Security.MembershipProvider.RequiresUniqueEmail' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 78 13 EmptyMVC
Error 10 'EmptyMVC.Controllers.ProfileProvider.RequiresQuestionAndAnswer.set': cannot override because 'System.Web.Security.MembershipProvider.RequiresQuestionAndAnswer' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 122 13 EmptyMVC
Error 3 'EmptyMVC.Controllers.ProfileProvider.PasswordStrengthRegularExpression': cannot change access modifiers when overriding 'public' inherited member 'System.Web.Security.MembershipProvider.PasswordStrengthRegularExpression' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 28 35 EmptyMVC
Error 6 'EmptyMVC.Controllers.ProfileProvider.PasswordFormat': type must be 'System.Web.Security.MembershipPasswordFormat' to match overridden member 'System.Web.Security.MembershipProvider.PasswordFormat' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 61 32 EmptyMVC
Error 8 'EmptyMVC.Controllers.ProfileProvider.PasswordAttemptWindow.set': cannot override because 'System.Web.Security.MembershipProvider.PasswordAttemptWindow' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 89 13 EmptyMVC
Error 5 'EmptyMVC.Controllers.ProfileProvider.MinRequiredPasswordLength.set': cannot override because 'System.Web.Security.MembershipProvider.MinRequiredPasswordLength' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 56 13 EmptyMVC
Error 4 'EmptyMVC.Controllers.ProfileProvider.MinRequiredNonAlphanumericCharacters.set': cannot override because 'System.Web.Security.MembershipProvider.MinRequiredNonAlphanumericCharacters' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 45 13 EmptyMVC
Error 9 'EmptyMVC.Controllers.ProfileProvider.MaxInvalidPasswordAttempts.set': cannot override because 'System.Web.Security.MembershipProvider.MaxInvalidPasswordAttempts' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 100 13 EmptyMVC
Error 12 'EmptyMVC.Controllers.ProfileProvider.EnablePasswordRetrieval.set': cannot override because 'System.Web.Security.MembershipProvider.EnablePasswordRetrieval' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 144 13 EmptyMVC
Error 11 'EmptyMVC.Controllers.ProfileProvider.EnablePasswordReset.set': cannot override because 'System.Web.Security.MembershipProvider.EnablePasswordReset' does not have an overridable set accessor C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 133 13 EmptyMVC
Error 1 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.PasswordStrengthRegularExpression.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Error 2 'EmptyMVC.Controllers.ProfileProvider' does not implement inherited abstract member 'System.Web.Security.MembershipProvider.PasswordFormat.get' C:\Users\DigitalJedi\documents\visual studio 2010\Projects\EmptyMVC\EmptyMVC\Controllers\ProfileController.cs 12 18 EmptyMVC
Run Code Online (Sandbox Code Playgroud)
你应该使用override
而不是new
你的方法.使用new
它时,会创建一个新方法,该方法隐藏基类中现有的同名方法,但实际上并未实现该方法.因为该方法是abstract
在基类中声明的,所以您需要在任何非抽象继承类中实现它.使用override
通知编译器您正在实现基类中定义的抽象方法,而不是像它那样替换它new
.
编辑:您使用时收到的错误消息override
是因为MembershipProvider没有在这些属性上实现settors.删除这些属性的settors,您的编译器错误将消失.在创建或配置提供程序时,您可能希望为这些属性设置支持字段.
我没有发现生成的编译器错误要么模糊不清,要么没有信息.这应该是显而易见的.您需要做的就是查看您正在实现的类的文档,您可以看到没有针对有错误的属性的setter.