Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重构代码,使基类只包含一个公共成员_C#_Oop_Base Class - Fatal编程技术网

C# 重构代码,使基类只包含一个公共成员

C# 重构代码,使基类只包含一个公共成员,c#,oop,base-class,C#,Oop,Base Class,} 我有两门课,一门是StreamManager,另一门是StreamManager。正如您在上面看到的,有一个成员变量Vehicle类型,在这些类别中很常见。 这有意义吗?我是否可以重构“iHicle Vehicle”到一个基类?这个问题对我来说似乎非常假设。看看你们的课程,我根本看不出它们存在的原因。您有AIp和BIp,但它们显然是IP地址,所以有两个不同的属性是没有意义的。我只需要一个StreamManager类就可以了。这些类是相同的。你为什么有两个?您可以将它们重构为单个StreamM

}

我有两门课,一门是StreamManager,另一门是StreamManager。正如您在上面看到的,有一个成员变量Vehicle类型,在这些类别中很常见。
这有意义吗?我是否可以重构“iHicle Vehicle”到一个基类?

这个问题对我来说似乎非常假设。看看你们的课程,我根本看不出它们存在的原因。您有AIp和BIp,但它们显然是IP地址,所以有两个不同的属性是没有意义的。我只需要一个StreamManager类就可以了。

这些类是相同的。你为什么有两个?您可以将它们重构为单个StreamManager类,然后为AStream实例化一个,为BStream实例化另一个?var aStream=新的StreamManager;var bStream=新的StreamManager;您的问题的答案是肯定的,您可以将车辆移动到基类。还有别的吗?
public class AStreamManager
{
    public IVehicle Vehicle { get; set; }

    public string AIp { get; set; }
    public int APort { get; set; }

    public delegate NetworkStream ConnectToAStream(string host, int port);

    public AStreamManager(IVehicle vehicle, string IP, int Port)
    {
        Vehicle = vehicle;

        AIp = IP;
        APort = Port;
    }

    public NetworkStream ConnectToVehicleAStream(ConnectToAStream conn)
    {
        return conn(AIp, APort); ;
    }
}

public class BStreamManager
{
    public IVehicle Vehicle { get; set; }

    public string BIp { get; set; }
    public int BPort { get; set; }

    public delegate NetworkStream ConnectToBStream(string host, int port);

    public BStreamManager(IVehicle vehicle, string IP, int Port)
    {
        Vehicle = vehicle;

        BIp = IP;
        BPort = Port;
    }

    public NetworkStream ConnectToVehicleBStream(ConnectToBStream conn)
    {
        return conn(BIp, BPort); ;
    }