加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 分配代码中的约定?

发布时间:2020-12-15 08:31:52 所属栏目:百科 来源:网络整理
导读:我有两个类,A和B. B知道A,A不知道B. B有可以很好地设置A的属性,虽然A和B之间没有共享的继承.会有很多次当我需要从A分配B的属性时,我正在寻找关于我应该放置代码的指针. public class A{}public class B{ //constructor? public B(A a) { //set b's propertie
我有两个类,A和B. B知道A,A不知道B. B有可以很好地设置A的属性,虽然A和B之间没有共享的继承.会有很多次当我需要从A分配B的属性时,我正在寻找关于我应该放置代码的指针.
public class A
{

}

public class B
{
    //constructor?
    public B(A a)
    {
        //set b's properties from a
    }

    //factory method?
    public static B FromA(A a)
    {
        B b = new B();
        //set b's properties from a
        return b;
    }

    //setter method?
    public static void SetBFromA(B b,A a)
    {
        //set b's properties from a
    }

    //assignment method?
    public void AssignFrom(A a)
    {
        //set b's properties from a
    }
}

//static helper class?
public static class BHelper
{
    public static B GetBFromA(A a)
    {
        B b = new B();
        //set b's properties from a
        return b;
    }

    public static void SetBFromA(B b,A a)
    {
        //set b's properties from a
    }
}

哪些(如果有的话)是常见做法?根据他们的签名,他们中的任何一个都有影响吗?例如,使用构造函数通常会传达B是否持有对传入的A的引用?这些是我正在考虑的考虑因素.

谢谢!

解决方法

您提到的所有选项都是有效的.您选择哪种方式取决于具体情况.
//constructor?
public B(A a)
{
    //set b's properties from a
}

如果没有来自A的数据,B不能存在时,构造函数模式将是选择.

//factory method?
public static B FromA(A a)
{
    B b = new B();
    //set b's properties from a
    return b;
}

当B值得到的依赖于A或B中的值时,工厂方法将是选择模式.特别是如果B具有后代,则A中的值将提供构造选择.

//setter method?
public static void SetBFromA(B b,A a)
{
    //set b's properties from a
}

setter方法不适用于您的场景,因为当A和B不知道彼此并且第三方需要调解时,将使用此方法.

//assignment method?
public void AssignFrom(A a)
{
    //set b's properties from a
}

这基本上是访客模式.访问B并留下一些东西(想想单身汉).如果来自A的数据对于B是可选的,那么这将是选择的模式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读