将套接字保存为类型对象并在使用时进行转换

时间:2012-10-17 08:49:21

标签: c# mono xamarin.android

我正在使用Mono创建一个跨平台应用程序,它可以使用不同类型的连接类型(蓝牙,WiFi等),但在任何给定时间它总是只有一个套接字连接。

在编译时决定使用什么连接类型

我希望我的应用程序的所有不同页面都可以访问此套接字连接,然后在接口下面,它们将具有其特定的实现(例如Android蓝牙实现),总是需要android.bluetooth.BluetoothSocket so我把它投到了那个。

所以我的Views和ViewModel不知道它是什么类型的套接字

我的理由是能够将它隐藏在一个界面后面并且只有一个属性

Public Interface MyContainer
{
    Bool Connected { get; set; }
    Object Socket { get; set; }
}

这会是非常糟糕的代码吗?当它根据平台和connectiontype

发生变化时,我找不到任何其他合理的方法来隐藏接口后面的Socket

1 个答案:

答案 0 :(得分:1)

您可以将您的班级设为通用,以避免使用object 因此,例如,您将使用:

public class MyContainer<T>{
    ...

    T Socket { get; set; }
    ...
}

然后像:

一样使用它
MyContainer<BlueToothSocket> container = new MyContainer<BlueToothSocket>();
BlueToothSocket socket = container.Socket;