繁体   English   中英

在C#中继承NetworkInterface

[英]Inheriting NetworkInterface in C#

我在网上搜索了继承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...
}

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

我会为NetworkInterface编写扩展方法

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

并用作ni.MyMethod()

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

public class ManagedNetworkInterface : NetworkInterface
{
    private NetworkInterface ni;

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

    //ect...
}

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

class NetworkAdapter : NetworkInterface
{
    private NetworkInterface ni;

    public override string Description => _nic.Description;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM