۱۳۸۸/۰۵/۱۵

استفاده از كلاس‌هاي *My وي بي در #C


يك سري قابليت در فضاي نام Microsoft.VisualBasic وجود دارد كه به ظاهر ساير برنامه نويسان دات نت از آن محروم هستند. براي مثال My.Computer.Network.IsAvailable براي بررسي اينكه آيا اتصال به شبكه برقرار است يا My.Computer.Audio.Play جهت نواختن يك فايل صوتي، كلاس‌هاي My.Application، My.Computer، My.User My.Webservices، My.DataSources و امثال آن.
از اين فضاي نام در C# يا تمامي زبان‌هاي ديگر دات نت نيز مي‌توان استفاده كرد. تنها كافي است ارجاعي را به Microsoft.VisualBasic.dll اضافه كنيد، در ادامه using Microsoft.VisualBasic.MyServices و سپس معادل‌هاي آن‌ها به صورت زير خواهند بود:

'VB code
Me.cbNetworked.Checked = My.Computer.Network.IsAvailable

// C# code
MyComputer mc = new MyComputer();
cbNetworked.Checked = mc.Network.IsAvailable;

'VB code
Me.cbAltKey.Checked = My.Computer.Keyboard.AltKeyDown
Me.cbCapsLock.Checked = My.Computer.Keyboard.CapsLock
Me.cbCtrlKey.Checked = My.Computer.Keyboard.CtrlKeyDown
' etc...

// C# code
MyComputer mc = new MyComputer();
this.cbAltKey.Checked = mc.Computer.Keyboard.AltKeyDown;
this.cbCapsLock.Checked = mc.Computer.Keyboard.CapsLock;
this.cbCtrlKey.Checked = mc.Computer.Keyboard.CtrlKeyDown;
' etc...

'VB code
My.Computer.Audio.Play(lbClips.SelectedItem)

// C# code
MyAudio ma = new MyAudio();
ma.Play(lbClips.SelectedItem);

'VB code
My.Computer.Info.TotalPhysicalMemory
'etc...

// C# code
MyComputer mc = new MyComputer();
mc.Info.TotalPhysicalMemory;
// etc...

هر چند در واقعيت اين فضاي نام تنها محصور كننده‌ي يك سري از كلاس‌هاي ديگر دات نت است. براي مثال اگر به سورس دات نت فريم ورك مراجعه كنيد، My.Computer.Network.IsAvailable آن دقيقا محصور كننده‌ي متد NetworkInterface.GetIsNetworkAvailable واقع شده در فضاي نام استاندارد System.Net.NetworkInformation است.