【发布时间】:2017-03-07 15:53:26
【问题描述】:
当我尝试将我的界面添加到数据库时,我的方法出现错误,它给了我错误,
参数 1:无法从“ForumSite.ActionsAndMethods.Registration.IRegistration”转换为“ForumSite.Models.User”。
这是IRegistration中的代码:
using ForumSite.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ForumSite.ActionsAndMethods.Registration
{
public interface IRegistration
{
int UserId { get; }
string Email { get; }
string Password { get; }
string FirstName { get; }
string LastName { get; }
DateTime Birthday { get; }
DateTime DateCreated { get; set; }
string MobileNumber { get; }
string Address { get; }
int UserIsDeleted { get; set; }
int UserRoleId { get; set; }
UserRole UserRole { get; }
}
}
这是我模型中的代码:
namespace ForumSite.Models
{
using ActionsAndMethods.Registration;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class User : IRegistration
{
public int UserId { get; set; }
[Display(Name = "Email Address")]
[Required(ErrorMessage = "This field required.")]
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@([a-zA-Z]+)\.([a-zA-Z]{2,5})$", ErrorMessage = "Enter Valid Email Address")]
[StringLength(50, MinimumLength = 8, ErrorMessage = "8 to 50 characters only")]
public string Email { get; set; }
[Display(Name = "Password")]
[Required(ErrorMessage = "This field required.")]
[RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "Alphanumeric characters only")]
[StringLength(50, MinimumLength = 8, ErrorMessage = "8 to 50 characters only")]
public string Password { get; set; }
[Display(Name = "Confirm Password")]
[Required(ErrorMessage = "This field required.")]
[RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "Alphanumeric characters only")]
[StringLength(50, MinimumLength = 8, ErrorMessage = "8 to 50 characters only")]
public string PasswordConfirm { get; set; }
[Display(Name = "First Name")]
[Required(ErrorMessage = "This field required.")]
[RegularExpression(@"^[a-zA-Z\s]+$", ErrorMessage = "Letters Only.")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[Required(ErrorMessage = "This field required.")]
[RegularExpression(@"^[a-zA-Z\s]+$", ErrorMessage = "Letters Only.")]
public string LastName { get; set; }
[Display(Name = "Birthday")]
[Required(ErrorMessage = "This field required.")]
public DateTime Birthday { get; set; }
public DateTime DateCreated { get; set; }
[Display(Name = "Mobile Number")]
[Required(ErrorMessage = "This field required.")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Numeric input only.")]
public string MobileNumber { get; set; }
[Display(Name = "Address")]
[Required(ErrorMessage = "This field required.")]
public string Address { get; set; }
public int UserIsDeleted { get; set; }
public int UserRoleId { get; set; }
public UserRole UserRole { get; set; }
}
}
最后,我将用户添加到我的数据库的方法:
using ForumSite.ActionsAndMethods.Registration;
using ForumSite.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ForumSite.ActionsAndMethods
{
public class RegisterAction : IRegistration
{
ForumDBEntities ent = new ForumDBEntities();
public void Registration(IRegistration reg)
{
reg.DateCreated = DateTime.Now;
reg.UserRoleId = 1;
reg.UserIsDeleted = 0;
ent.Users.Add(reg);
ent.SaveChanges();
}
string IRegistration.Address { get; }
int IRegistration.UserId { get; }
string IRegistration.Email { get; }
string IRegistration.Password { get; }
string IRegistration.FirstName { get; }
string IRegistration.LastName { get; }
DateTime IRegistration.Birthday { get; }
DateTime IRegistration.DateCreated { get; set; }
string IRegistration.MobileNumber { get; }
int IRegistration.UserIsDeleted { get; set; }
int IRegistration.UserRoleId { get; set; }
UserRole IRegistration.UserRole { get; }
}
}
我想知道是什么导致了这个错误?
【问题讨论】:
-
虽然每个
User都实现IRegistration,但并不是每个IRegistration实例都是User。 -
您也需要显示实际引发错误的行
-
你能告诉我们错误发生的代码吗?
-
User必然是IRegistration但IRegistraiton不一定是User。这就是IRegistration存在的原因:不同的、不相关的类可以实现它。如果你有另一个类CoffeeTable,它实现了IRegistration,那么每个CoffeeTable必然都是User吗?显然不是。因此编译器不会让你做出这样的疯狂假设。你是说“滑板和飞机都是交通工具;因此,编译器应该假设每个滑板都有四个巨型喷气发动机”。 -
@DavidG 你应该有这个答案兄弟。