我正在使用Mono创建一个跨平台应用程序,它可以使用不同类型的连接类型(蓝牙,WiFi等),但在任何给定时间它总是只有一个套接字连接。
在编译时决定使用什么连接类型
我希望我的应用程序的所有不同页面都可以访问此套接字连接,然后在接口下面,它们将具有其特定的实现(例如Android蓝牙实现),总是需要android.bluetooth.BluetoothSocket so我把它投到了那个。
所以我的Views和ViewModel不知道它是什么类型的套接字
我的理由是能够将它隐藏在一个界面后面并且只有一个属性
Public Interface MyContainer
{
Bool Connected { get; set; }
Object Socket { get; set; }
}
这会是非常糟糕的代码吗?当它根据平台和connectiontype
发生变化时,我找不到任何其他合理的方法来隐藏接口后面的Socket答案 0 :(得分:1)
您可以将您的班级设为通用,以避免使用object
因此,例如,您将使用:
public class MyContainer<T>{
...
T Socket { get; set; }
...
}
然后像:
一样使用它MyContainer<BlueToothSocket> container = new MyContainer<BlueToothSocket>();
BlueToothSocket socket = container.Socket;