I have searched the web for examples of inheriting System.Net.NetworkInformation.NetworkInterface but I cannot see any elegant solutions to this. It appears that the static method NetworkInterface.GetAllNetworkInterfaces()
returns an internal implementation called SystemNetworkInterface
.
Basically I want to inherit this into a class called ManagedNetworkInterface
and add some additional functionality to it. Can anyone think of an elegant solution of how to do this? I have tried, but every time, something stops me dead in my tracks!
EDIT 1:
Is it acceptable to provide the implementation by casting the implementation back to NetworkInterface
and then to ManagedNetworkInterface
?
...this example seems messy!
ManagedNetworkInterface mni = (ManagedNetworkInterface)(NetworkInterface)NetworkInterface.GetAllNetworkInterfaces()[0];
EDIT 2:
I have also thought of using a composition-like model...
public class ManagedNetworkInterface : NetworkInterface
{
private NetworkInterface ni;
public override string Description
{
get { return ni.Description; }
}
//ect...
}
Is this a good or bad idea?
I would write an extension method for NetworkInterface
public static class MyExtensions
{
public static void MyMethod(this NetworkInterface ni)
{
//Some Code
}
}
and use as ni.MyMethod()
Issue resolved. I have used composition to inherit and implement abstract class NetworkInterface
Code
public class ManagedNetworkInterface : NetworkInterface
{
private NetworkInterface ni;
public override string Description
{
get { return ni.Description; }
}
//ect...
}
The new class now includes several mechanisms for creating instances of ManagedNetworkInterface using things like IP Address, Physical Address, ID, Name etc.
class NetworkAdapter : NetworkInterface
{
private NetworkInterface ni;
public override string Description => _nic.Description;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.