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

标签 c#

我有两个类,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 的引用吗?这些是我正在考虑的考虑因素。

谢谢!

最佳答案

我会抛出一个替代方案:

public static B CreateFromA(A a) { }

这使用工厂语法,建议您可以在给定 A 的情况下生成 B,但要避免任何看起来像转换的事情。

关于c# - 分配代码中的约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3344477/

相关文章:

C#:如何动态加载/实例化 DLL?

c# - 异步替代

c# - 装饰通用注册的子集

java - ER 建模中的常见错误?

c# - 我可以在单层或使用的每一层中注册所有 IoC 容器组件吗?

c# - 更改 ViewModel 对象不会反射(reflect)对 View 的更改

c# - 通用可空枚举

c# - 如何编写我的 WinForms 应用程序以播放系统声音?

c# - 在 SignalR 中更改 DefaultMessageBufferSize

c# - 在 WPF XAML 窗口上添加图标会导致错误/崩溃 VS2012