상속 된 예제 인 System.Net.NetworkInformation.NetworkInterface을 웹에서 검색했지만 이에 대한 우아한 해결책은 없습니다. 정적 메서드 NetworkInterface.GetAllNetworkInterfaces()
은 SystemNetworkInterface
이라는 내부 구현을 반환합니다.C#에서 NetworkInterface 상속
기본적으로 이것을 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'는 실제로'SystemNetworkInterface'이므로'ManagedNetworkInterface' 유형으로 변환하려고하면'InvalidCastException' 런타임이 발생합니다. – tomfanning
@tomfanning, 네, 이미 발견했기 때문에 SystemNetworkInterface가 NetworkInterface로 다시 캐스트 된 다음 ManagedNetworkInterface로 이중 캐스트를 수행하는 것이 좋은지 묻습니다. 그것은 나에게보기 흉하게 보인다! – series0ne
@activwerx : 네 구성이 좋습니다 : http://en.wikipedia.org/wiki/Composition_over_inheritance – Surfbutler