[英]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.