为了账号安全,请及时绑定邮箱和手机立即绑定

在 C# 中仅继承派生类中的有限属性

在 C# 中仅继承派生类中的有限属性

PHP
狐的传说 2024-01-20 21:45:57
在 c# 中:我有 UserProfile 类(模型),其中包含以下字段:FName、LName、电子邮件、密码如何创建一个从 UserProfile 类(模型)派生并且仅包含选定属性的类(模型)。例如,我想从 UserProfile 类(模型)创建一个登录类(模型),并且我只想保留电子邮件和密码属性。我想从 UserProfile 类(模型)创建 ForgotPassword 类(模型),我只想保留电子邮件属性。
查看完整描述

4 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

我不知道这个层次结构是否适合您的需求和规格,但似乎您把问题倒退了。


您可以编写尊重抽象和继承的 OOP 原则(类名乍一看不是很相关):


public class ForgotPassword

{

  public string Email;

}


public class Login : ForgotPassword

{

  public string Password;

}


public class UserProfile : Login

{

  public string FName;

  public string LName;

}

不知道能不能做自己想做的事...


在 C# 中,我认为不是。


查看完整回答
反对 回复 2024-01-20
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我认为使用 AutoMapper 包适合您的需求。



查看完整回答
反对 回复 2024-01-20
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

将接口与抽象类结合使用的示例:


// Different interfaces

interface IUserData

{

    string Email;

    string Password;

}


interface IUserNameData

{

    public abstract string FName;

    public abstract string LName;

}


// Abstract class

abstract class UserProfile : IUserData

{

    public abstract string Email;

    public abstract string Password;

}



// Inherited classs

class LoginData : UserProfile

{

    // Implements IUserData

}


class UserData : UserProfile, IUserNameData

{

    // Implements IUserData and IUserNameData

}


查看完整回答
反对 回复 2024-01-20
?
守着一只汪

TA贡献1872条经验 获得超3个赞

class ParentA { public class AB { public void A_AB() { Console.WriteLine("我是 A 的 AB"); } } public class AC { public void A_AC() { Console.WriteLine("我是 A 的 AC"); } } } B 类:parentA.AB {


}

class C : parentA.AC

{


}

class Program

{

    static void Main(string[] args)

    {

        C c = new C();

        B b = new B();

        c.A_AC();


        b.A_AB();


    }

}


查看完整回答
反对 回复 2024-01-20
  • 4 回答
  • 0 关注
  • 43 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信