在C#中继承NetworkInterface

时间:2012-09-26 09:04:53

标签: c# .net inheritance network-programming network-interface

我在网上搜索了继承System.Net.NetworkInformation.NetworkInterface的示例,但我看不出任何优雅的解决方案。似乎静态方法NetworkInterface.GetAllNetworkInterfaces()返回一个名为SystemNetworkInterface的内部实现。

基本上我想将它继承到一个名为ManagedNetworkInterface的类中,并为其添加一些额外的功能。谁能想到如何做到这一点的优雅解决方案?我曾尝试过,但每次都有一些东西阻止我死在我的轨道上!

编辑1:

通过将实现强制转换回NetworkInterface然后再转移到ManagedNetworkInterface来提供实现是否可以接受?

......这个例子看起来很乱!

ManagedNetworkInterface mni = (ManagedNetworkInterface)(NetworkInterface)NetworkInterface.GetAllNetworkInterfaces()[0];

编辑2:

我还想过使用类似合成的模型......

public class ManagedNetworkInterface : NetworkInterface
{
    private NetworkInterface ni;

    public override string Description
    {
        get { return ni.Description; }
    }

    //ect...
}

这是一个好主意还是坏主意?

3 个答案:

答案 0 :(得分:1)

我会为NetworkInterface编写扩展方法

public static class MyExtensions
{
    public static void MyMethod(this NetworkInterface ni)
    {
          //Some Code
    }
}

并用作ni.MyMethod()

答案 1 :(得分:0)

问题已解决。我使用了composition来继承和实现抽象类NetworkInterface

<强>代码

public class ManagedNetworkInterface : NetworkInterface
{
    private NetworkInterface ni;

    public override string Description
    {
        get { return ni.Description; }
    }

    //ect...
}

新类现在包含几种使用IP地址,物理地址,ID,名称等创建ManagedNetworkInterface实例的机制。

答案 2 :(得分:-1)

class NetworkAdapter : NetworkInterface
{
    private NetworkInterface ni;

    public override string Description => _nic.Description;
}