我在网上搜索了继承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...
}
这是一个好主意还是坏主意?
答案 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;
}