C# 泛型,其中<;t>;类库和MVC应用程序
我正在尝试学习如何在泛型中使用where,我似乎可以使用它,但我不确定我是如何使用它的 目前我在类库中有:C# 泛型,其中<;t>;类库和MVC应用程序,c#,asp.net-mvc-4,generics,C#,Asp.net Mvc 4,Generics,我正在尝试学习如何在泛型中使用where,我似乎可以使用它,但我不确定我是如何使用它的 目前我在类库中有: public class NewMembersViewModel { public NewMembersViewModel() { Id = Guid.NewGuid().ToString(); } [Display(Name = "Username")] [RemoteUse
public class NewMembersViewModel
{
public NewMembersViewModel()
{
Id = Guid.NewGuid().ToString();
}
[Display(Name = "Username")]
[RemoteUsernameValidation("IsUserNameTaken", "Register", ErrorMessage = "Username already taken")]
public string MemberUsername { get; set; }
[Display(Name = "Password")]
public string MemberPassword { get; set; }
[Display(Name = "Email")]
[RemoteEmailValidation("IsEmailTaken", "Register", ErrorMessage = "Email already in use")]
public string MemberEmail { get; set; }
[Display(Name = "Mobile Number")]
[RemoteMobileValidation("IsMobileTaken", "Register", ErrorMessage = "Mobile Number already in use")]
public string MemberMobile { get; set; }
[Display(Name = "Forename")]
public string MemberForename { get; set; }
[Display(Name = "Surname")]
public string MemberSurname { get; set; }
public string Id { get; set; }
public int VerificationCode { get; set; }
}
及
公共静态类SqlDatabaseMethods,其中T:NewMembersViewModel
{
公共静态bool登录用户(T成员)
{
var p=member.MemberEmail;
返回true;
}
公共静态bool AddNewMember(T成员)
{
var name=member.MemberForename;
返回true;
}
}
然后在我的MVC应用程序中,我有:
bool name = SqlDatabaseMethods<NewMembersViewModel>.AddNewMember(model);
if (name)
{
var test = "works";
}
bool name=SqlDatabaseMethods.AddNewMember(model);
如果(姓名)
{
var test=“works”;
}
这确实有效,有人能告诉我我是否做得正确吗?因为我所看到的所有示例都是控制台应用程序当您需要一些跨多个类通用的功能时,泛型是有意义的。在本例中,
where
子句定义了泛型类型的约束。在这种情况下,通用方法有助于重用功能
在您的情况下,SqlDatabaseMethods
似乎不能重复使用多次,因为modelNewMembersViewModel
似乎非常具体,在其他地方几乎不可重复使用
在代码中,您正确地使用了泛型,但在我看来,这里根本不需要泛型。您可以同样轻松地使用以下代码,而不需要泛型的开销:
public static class SqlDatabaseMethods
{
public static bool LoginUser(NewMembersViewModel member)
{
var p = member.MemberEmail;
return true;
}
public static bool AddNewMember(NewMembersViewModel member)
{
var name = member.MemberForename;
return true;
}
}
然后调用如下方法:
bool name = SqlDatabaseMethods.AddNewMember(model);
if (name)
{
var test = "works";
}
您是否有从
NewMembersViewModel
派生的类?如果没有,则只有一个具体类型,您不需要泛型,因为永远不会有任何t
不是NewMembersViewModel
。您是否可以解释一下您使用SqlDatabaseMethods
试图实现的目标?目前,静态方法只返回true。泛型在不同类型中使用相同的代码时最有用。Hi@StuartLC我正在学习如何使用这种类型的功能,因此,返回true只是一个测试。Hi我正在学习如何使用这种类型的功能,因为我以前从未使用过它@dotnetom的答案非常清楚,只有在跨多个类使用相同功能时,使用“where”才真正有用。但我在MVC应用程序中正确使用了它这一事实是主要的答案,因为这是我不确定的代码部分。
bool name = SqlDatabaseMethods.AddNewMember(model);
if (name)
{
var test = "works";
}