我想将我的接口或类属性继承到派生类中,因为这里的属性是我的代码:
public class Login : Customer
{
??
}
interface Customer
{
string Name { get; set; }
string pdw { get; set; }
}
但是我无法做到这一点,请告诉我实现我的要求的最佳方式。
答案 0 :(得分:1)
您没有在界面中指定代码,因此没有任何内容可以继承。一个类实现一个接口,它不会继承它。
但是,如果要为派生类提供代码,则可以编写一个基类来包含它。
通常,您希望提供一个实现某些接口(但不是全部)的基类。您可以通过编写实现接口部分的 abstract 基类来实现,并将未实现的方法声明为 abstract 。
一个例子将澄清:
interface ICustomer
{
string Name { get; set; }
string Password { get; set; }
string SomeOtherMethod();
}
public abstract class CustomerBase : ICustomer
{
public string Name { get; set; }
public string Password { get; set; }
// We do not implement SomeOtherMethod() here.
// Instead, make it abstract to force a non-abstract derived class to implement it:
public abstract string SomeOtherMethod();
}
class Login: CustomerBase
{
// This class does not need to implement Name or Password,
// because it can inherit them from CustomerBase.
// However it must still implement SomeOtherMethod()
// because that method is declared abstract in the base class.
public override string SomeOtherMethod()
{
return "Implemented by me";
}
}
答案 1 :(得分:0)
看看这个例子,我认为你的路线走错了。
继承与实现接口不同。
接口更像是契约,其中实现它的类也必须遵守: -
public interface ISendMessage
{
void Send();
}
public class SmsSender : ISendMessage
{
public void Send()
{
// Code to send SMS
}
}
public class EmailSender : ISendMessage
{
public void Send()
{
// Code to send Email
}
}
继承,通常用于具有基类的类,其他类似类可以继承其基本属性。
示例基类是Vehicle: -
public class Vehicle
{
public string Manufacturer { get; set; }
public string Model { get; set; }
public int ManufactureYear { get; set; }
public string RegNumber { get; set; }
public decimal Value { get; set; }
}
Vehicle类的所有属性均适用于卡车,摩托车,汽车或公共汽车。
但摩托车和汽车有不同的属性,不能像这样: -
public class MotorBike : Vehicle
{
}
public class Car : Vehicle
{
public int NumberOfDoors { get; set; }
public int NumberofSeatBelts { get; set; }
}
答案 2 :(得分:0)
实施界面。
interface Customer
{
// Property signatures:
string Name
{
get;
set;
}
string pdw
{
get;
set;
}
}
class Login : Customer
{
// Fields:
private string _name;
private string _pdw;
// Constructor:
public Login ()
{
}
// Property implementation:
public string name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public string pdw
{
get
{
return _pdw;
}
set
{
_pdw = value;
}
}
}
答案 3 :(得分:0)
public class Login : ICustomer
{
public string Name { get; set; }
public string Pdw { get; set; }
}
interface ICustomer
{
string Name { get; set; }
string Pdw { get; set; }
}
var loginModel = new Login();
//then access loginModel.Name & loginModel.Pdw
始终对您的属性使用上层方法。 Pdw不是pdw。
并且始终使用ISomething声明您的接口,例如ICustomer,而不是Customer。
基本上你的模型的接口是有害的(长期项目)或者至少这是我的观点。
保留架构,存储库,总线等接口。
让你的模型保持幂等,没有依赖。 (或者至少没有那么多的依赖)
^依赖项等于接口或其他类。
答案 4 :(得分:0)
另一个对此有何看法?而不是interface
:
public class Customer
{
public string Name { get; set; }
public string pdw { get; set; }
}
public class Login : Customer
{
}
Login
类现在可以访问基类属性,而不必自己实现它们。
当然,如果您无法控制原始界面的使用,请忽略此答案,因为它只是展示其他方法的一种方法。