最近、実行していたWPFアプリケーション用にこのコードを作成しました。コードを再利用しているプロジェクトは、Windows8アプリケーションです。コード自体は同じなので、何が問題になるのかはよくわかりません。もちろん、それらの唯一の違いは、使用されているアプリケーションと.NETFrameworkです。WPFアプリケーションでは.NET3.0をターゲットにしており、Windows8アプリケーションでは.NET4.5を使用しています。
お分かりのように、これは拡張メソッドです。
public static bool isTunnel(this NetworkInterface adapter)
{
return adapter.NetworkInterfaceType == NetworkInterfaceType.Tunnel;
}
そのメソッドに与えるエラーは次のとおりです。
Error 3 'System.Net.NetworkInformation.NetworkInterface' does not contain a definition for 'NetworkInterfaceType' and no extension method 'NetworkInterfaceType' accepting a first argument of type 'System.Net.NetworkInformation.NetworkInterface' could be found (are you missing a using directive or an assembly reference?)
Error 4 The name 'NetworkInterfaceType' does not exist in the current context
私のモデルクラスでも同様の問題が発生しています。この行で:
foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
GetAllNetworkInterfaces()がNetworkInterfaceに存在しないというエラーが発生します。正確なエラーは次のとおりです。
Error 15 'System.Net.NetworkInformation.NetworkInterface' does not contain a definition for 'GetAllNetworkInterfaces'
Windows 8アプリケーションでWPFアプリケーションのコードを再利用することについて私が知らないことがありますか?
更新: ianainterfacetypeを使用して、拡張メソッドの半分を修正できました。これは、拡張メソッドがイーサネット、ワイヤレス、またはトンネルのいずれであるかを判別できたためです。それらがVirtualBoxによって作成されたのかVMwareによって作成されたのかを判断する方法をまだ探しています。
ianainterfacetypeについて知りたい人は、ここで情報を見つけることができます。