簡體   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