interface های مهم در C#
سلام دوستان خوب من،
راستش از یک طرف احساس می کنم interface ها ابزارهای مهمی در برنامه نویسی C# هستند(عذر می خوام اگر C# و دات نت رو از هم تفکیک نمی کنم) و دونستن اونا دید ما رو نسبت به C# خیلی تغییر میده. ولی در آموزش اونا کوتاهی میشه. خیلی وقت ها دوستان خیلی از مثال های حرفه یی رو متوجه نمیشند و دلیلش اینه که اونا پر از interface هستند اما دوستان از این interface ها سر در نمیارند. حذف interface از C# یعنی حذف بخش عمده یی از این زبان.
خیلی وقت ها کاستی های زیادی وجود داره اما خودمون رومون نمیشه اونا رو مطرح کنیم. من احساس کردم از interface ها زیاد خوشم نمیاد. اما یک مدت هست که به این نتیجه رسیدم که وقتی از مطلبی خوشمون نمیاد به جای فرار از اون بهتره که باهاش رو به رو شد و عمدا به طرفش رفت. تا حالا خیلی مطالب رو هدف گرفتم و یکی از اونا interface هاست. احساس می کنم که این وب سایت هم در زمینه ی interface ضعیف هست. چه در مورد خود مفهوم interface و چه در مورد interface های مهم و رایج در C# . برای همین تصمیم گرفتم روی interface ها تمرکز کنم همه ی مطالب پراکنده رو یک جا جمع کنم و برای این کار نیاز به کمک دیگر دوستان هم هست. مسلما خودم هم در تاپیک خیلی چیزها یاد خواهم گرفت و امیدوارم برای ارتقای سطح علمی دوستان در زمینه ی interface ، تاپیک خوبی باشه.
پس این تاپیک رو فقط به آموزش interface های مهم C# نسبت میدیم.
گاهی از مثال های MSDN استفاده می کنیم. اگه کسی مثال بهتری سراغ داره به ما خبر بده.
من پست های مختلفی را اضافه می کنم و به اونا لینک میدم. اگه شما هم پست های خوبی بگذارید و به اونا لینک بدیم خیلی عالی میشه. پس هر پست مفیدی را هر جا سراغ دارید به من اطلاع بدید که لینکش رو اضافه کنم.
نظرات و پیشنهادات خودتون رو برای بهتر شدن تاپیک سراپا گوشم.
اول لیست اولیه موارد را قرار میدم بعد یکم یکم جای خالی اونا رو پر می کنم. همچنین موارد جدید رو هم اضافه می کنم.
یادمون باشه که فقط interface های مهم رو بررسی کنیم و نه اینکه دیکشنری وار به تمام interface های C# نگاه کنیم.
امیدورام interface ها رو به دید دوستان صمیمی نگاه کنید!
- interface چیست؟
برخی لینک ها:
اینها نظرات دوستان هستند که من در اینجا لینکشون رو قرار می دهم:
نقل قول: interface های مهم در C#
نقل قول:
در زیر لیستی از کلاس هایی را می بینید که این interface را پیاده سازی کرده اند. چه کلاس های دیگری را هم در اطرافتون می شناسید دارید که این interface رو پیاده سازی کرده باشند؟
این فقط 30 درصدشه.:کف:
Microsoft.Reporting.WinForms.AsyncWaitControl
Microsoft.Reporting.WinForms.ClientGDIRenderer
Microsoft.Reporting.WinForms.GdiContext
Microsoft.Reporting.WinForms.LocalReport
Microsoft.Reporting.WinForms.LocalReport+ReportRun timeSetupHandler
Microsoft.Reporting.WinForms.ReportHierarchy
Microsoft.Reporting.WinForms.ReportInfo
Microsoft.SqlServer.Management.Common.SqlConnectio nInfoWithConnection
Microsoft.SqlServer.Server.SmiConnection
Microsoft.SqlServer.Server.SmiEventStream
Microsoft.SqlServer.Server.SmiRecordBuffer
Microsoft.SqlServer.Server.SmiRequestExecutor
Microsoft.VisualBasic.FileIO.TextFieldParser
Microsoft.Win32.RegistryKey
System.ActivationContext
System.Activities.Debugger.StateManager
System.Activities.Statements.DurableTimerExtension
System.Activities.Statements.InteropEnvironment
System.Activities.Statements.InteropExecutor+Activ ityDefinitionResolution
System.Activities.Statements.InteropExecutor+Reset CurrentActivity
System.Activities.Statements.TimerTable
System.Activities.WorkflowDataContext
System.CodeDom.Compiler.TempFileCollection
System.Collections.Concurrent.BlockingCollection<T >
System.Collections.Concurrent.OrderablePartitioner <TSource>+EnumerableDropIndices<TSource>
System.Collections.Concurrent.Partitioner+DynamicP artitionerForIEnumerable<TSource>+InternalPartitio nEnumerable<TSource>
System.Collections.Generic.IEnumerator<T>
System.Collections.Generic.SynchronizedReadOnlyCol lection<T>+EnumeratorAdapter<T>
System.Collections.ObjectModel.ObservableCollectio n<T>+SimpleMonitor<T>
System.ComponentModel.Design.DesignerTransaction
System.ComponentModel.Design.IDesigner
System.ComponentModel.Design.Serialization.Seriali zationStore
System.ComponentModel.Design.ServiceContainer
System.ComponentModel.EventHandlerList
System.ComponentModel.IComponent
System.ComponentModel.IContainer
System.ComponentModel.License
System.Data.IDataReader
System.Data.IDbCommand
System.Data.IDbConnection
System.Data.IDbTransaction
System.Data.OleDb.IDBInfoWrapper
System.Data.OleDb.IDBPropertiesWrapper
System.Data.OleDb.IDBSchemaRowsetWrapper
System.Data.OleDb.IOpenRowsetWrapper
System.Data.OleDb.ITransactionJoinWrapper
System.Data.OleDb.OleDbConnectionInternal
System.Data.SqlClient.SqlBulkCopy
System.Data.SqlClient.SqlDebugContext
System.Data.SqlClient.SqlInternalConnectionTds
System.Data.SqlTypes.SqlStreamChars
System.Deployment.Internal.Isolation.BLOB
System.Deployment.Internal.Isolation.Manifest.Asse mblyReferenceDependentAssemblyEntry
System.Deployment.Internal.Isolation.Manifest.Dire ctoryEntry
System.Deployment.Internal.Isolation.Manifest.File Entry
System.Deployment.Internal.Isolation.Manifest.Hash ElementEntry
System.Deployment.Internal.Isolation.Manifest.Meta dataSectionEntry
System.Deployment.Internal.Isolation.Manifest.MuiR esourceMapEntry
System.Deployment.Internal.Isolation.Manifest.MuiR esourceTypeIdIntEntry
System.Deployment.Internal.Isolation.Manifest.MuiR esourceTypeIdStringEntry
System.Deployment.Internal.Isolation.Manifest.Regi stryKeyEntry
System.Deployment.Internal.Isolation.Store+IPathLo ck
System.Deployment.Internal.Isolation.StoreTransact ion
System.Diagnostics.AsyncStreamReader
System.Diagnostics.Eventing.EventProvider
System.Diagnostics.Eventing.EventProviderBase
System.Diagnostics.Eventing.EventProviderDataStrea m
System.Diagnostics.Eventing.Reader.EventLogConfigu ration
System.Diagnostics.Eventing.Reader.EventLogPropert ySelector
System.Diagnostics.Eventing.Reader.EventLogReader
System.Diagnostics.Eventing.Reader.EventLogSession
System.Diagnostics.Eventing.Reader.EventLogWatcher
System.Diagnostics.Eventing.Reader.EventRecord
System.Diagnostics.Eventing.Reader.ProviderMetadat a
System.Diagnostics.EventLogInternal
System.Diagnostics.PerformanceData.CounterSet
System.Diagnostics.PerformanceData.CounterSetInsta nce
System.Diagnostics.PerformanceData.CounterSetInsta nceCounterDataSet
System.Diagnostics.TraceListener
System.Drawing.Brush
System.Drawing.BufferedGraphics
System.Drawing.BufferedGraphicsContext
System.Drawing.Drawing2D.CustomLineCap
System.Drawing.Drawing2D.GraphicsPath
System.Drawing.Drawing2D.GraphicsPathIterator
System.Drawing.Drawing2D.Matrix
System.Drawing.Font
System.Drawing.FontConverter+FontNameConverter
System.Drawing.FontFamily
System.Drawing.GraphicsContext
System.Drawing.Icon
System.Drawing.IDeviceContext
System.Drawing.Image
System.Drawing.Imaging.EncoderParameter
System.Drawing.Imaging.EncoderParameters
System.Drawing.Imaging.ImageAttributes
System.Drawing.Imaging.PropertyItemInternal
System.Drawing.Internal.WindowsRegion
System.Drawing.Pen
System.Drawing.Region
System.Drawing.StringFormat
System.Drawing.Text.FontCollection
System.IdentityModel.Claims.WindowsClaimSet
System.IdentityModel.Claims.X509CertificateClaimSe t
System.IdentityModel.Claims.X509Identity
System.IdentityModel.Policy.UnconditionalPolicy
System.IdentityModel.Selectors.X509SecurityTokenPr ovider
System.IdentityModel.Tokens.WindowsSecurityToken
System.IdentityModel.Tokens.X509SecurityToken
System.IO.BinaryReader
System.IO.BinaryWriter
System.IO.IsolatedStorage.IsolatedStorageFile
System.IO.MemoryMappedFiles.MemoryMappedFile
System.IO.MemoryMappedFiles.MemoryMappedView
System.IO.Stream
System.IO.TextReader
System.IO.TextWriter
System.IO.UnmanagedMemoryAccessor
System.Linq.Parallel.AsynchronousChannel<T>
System.Linq.Parallel.SortHelper<TInputOutput,TKey>
System.Net.HttpListener
System.Net.HttpListenerResponse
System.Net.IWebProxyFinder
System.Net.Mail.AlternateViewCollection
System.Net.Mail.AttachmentBase
System.Net.Mail.AttachmentCollection
System.Net.Mail.LinkedResourceCollection
System.Net.Mail.MailMessage
System.Net.Mail.SmtpClient
System.Net.Mime.MimePart
System.Net.NetworkAddressChangePolled
System.Net.ProxyChain
System.Net.RequestContextBase
System.Net.Sockets.Socket
System.Net.Sockets.SocketAsyncEventArgs
System.Net.Sockets.TcpClient
System.Net.Sockets.UdpClient
System.Net.TimerThread+Timer
System.Net.TlsStream
System.Net.WebResponse
System.Resources.IResourceReader
System.Resources.IResourceWriter
System.Resources.ResourceSet
System.Runtime.AsyncResult+TransactionSignalScope
System.Runtime.Diagnostics.DiagnosticsEventProvide r
System.Runtime.InputQueue<T>
System.Runtime.InteropServices.CriticalHandle
System.Runtime.InteropServices.SafeHandle
System.Runtime.MemoryFailPoint
System.Security.AccessControl.Privilege+TlsContent s
System.Security.Cryptography.AsymmetricAlgorithm
System.Security.Cryptography.BCryptHashAlgorithm
System.Security.Cryptography.CapiHashAlgorithm
System.Security.Cryptography.CngKey
System.Security.Cryptography.DeriveBytes
System.Security.Cryptography.ECDiffieHellmanPublic Key
System.Security.Cryptography.ICryptoTransform
System.Security.Cryptography.RandomNumberGenerator
System.Security.Cryptography.SymmetricAlgorithm
System.Security.Policy.Evidence+EvidenceLockHolder
System.Security.Policy.Evidence+EvidenceUpgradeLoc kHolder
System.Security.Principal.WindowsIdentity
System.Security.Principal.WindowsImpersonationCont ext
System.Security.SecureString
System.Security.SecurityContext
System.Security.SecurityContextSwitcher
System.ServiceModel.Activation.SharedMemory
System.ServiceModel.Administration.WbemProvider+Th readJob
System.ServiceModel.ChannelFactory
System.ServiceModel.Channels.AllowHelper+Registrat ionForAllow
نقل قول: interface های مهم در C#
به نظر من اینترفیس ها رو میشه به برگه کلید در تصحیح پاسخ نامه های چهار گزینه ای تشبیه کرد. همون هایی که مصحح میزاره رو پاسخ نامه و تند تند جواب های درست رو علامته میزنه!
ما گاهی اشیائی داریم که از یه جنبه های شبیه هم اند ولی ذات اونها باهم فرق داره. میخوایم جدای این تفاوت ها از این شباهت استفاده کنیم بدون اینکه درگیر نوع و ساختار متفاوت این اشیا بیشم. به زبان ساده تر می خوایم برگه کلید رو روی شیء بزاریم و فقط اون چیزهایی رو که نیاز داریم ببینیم. برای این کار یه اینترفیس می نویسم و اون کلاسهایی رو که میخوایم این خصوصیت ها رو داشته باشند وارث قرار میدیم. در این شرایط این کلاس ها مجبور خواهند بود مفاد اینترفیس ما رو پیاده کنند. و ما میتونیم در یک مثلا متدی از این اینترفیس استفاده کنیم بدون اینکه برامون مهم باشه که شیء حاضر یک فرمه یا یک کلاسی که جدیدا نوشته شده و یا غیره. البته دلیل وجود و موارد استفاده اینترفیس ها بسیار بسیار بیشتر از اینه که دوستان و اساتید بحث رو بسط خواهند داد انشاءالله.
نقل قول: interface های مهم در C#
نقل قول:
نوشته شده توسط
moharrami
به نظر من اینترفیس ها رو میشه به برگه کلید در تصحیح پاسخ نامه های چهار گزینه ای تشبیه کرد. همون هایی که مصحح میزاره رو پاسخ نامه و تند تند جواب های درست رو علامته میزنه!
ما گاهی اشیائی داریم که از یه جنبه های شبیه هم اند ولی ذات اونها باهم فرق داره. میخوایم جدای این تفاوت ها از این شباهت استفاده کنیم بدون اینکه درگیر نوع و ساختار متفاوت این اشیا بیشم. به زبان ساده تر می خوایم برگه کلید رو روی شیء بزاریم و فقط اون چیزهایی رو که نیاز داریم ببینیم. برای این کار یه اینترفیس می نویسم و اون کلاسهایی رو که میخوایم این خصوصیت ها رو داشته باشند وارث قرار میدیم. در این شرایط این کلاس ها مجبور خواهند بود مفاد اینترفیس ما رو پیاده کنند. و ما میتونیم در یک مثلا متدی از این اینترفیس استفاده کنیم بدون اینکه برامون مهم باشه که شیء حاضر یک فرمه یا یک کلاسی که جدیدا نوشته شده و یا غیره. البته دلیل وجود و موارد استفاده اینترفیس ها بسیار بسیار بیشتر از اینه که دوستان و اساتید بحث رو بسط خواهند داد انشاءالله.
0 نفر از یک نفر این پاسخ رو مفید ارزیابی کردند.
حذف شدن این امکان کار خودم بود.کاش اون vulnerability رو پیدا نمیکردم.
نقل قول: interface های مهم در C#
مطلابتون عالی بود ، امیدوارم موفق باشید
لطفا ادامه بدید
نقل قول: interface های مهم در C#
مطالبتون عالی بود
تشکر از زحماتتون
لطفا ادامه بدید.
نقل قول: interface های مهم در C#
دوست عزیز ابتدا از اینکه به معرفی اینترفیس ها پرداختید و .... تشکر میکنم ولی برای اینکه برای سایر دوستان هم روشن بشه باید بگم این Interface هایی که معرفی میکنید متعلق به زبان C# نیست ...
چون توی پست اولتون گفته بودید اینترفیس های C# !!!!!!
کلا اینها توابع و ابزارهایی هستند که دات نت در اختیار برنامه نویسان قرار داده و اکثرا توی سایر زبان های تحت .net هم قابل استفاده هستند ... حالا چه Vb , چه C# !, ...
موفق باشید
نقل قول: interface های مهم در C#
این تاپیک رو ادامه نمیدید ؟
من مشکلی با اینتر فیس IComparer داشتم
امیدوار بودم با توضیحات شما حل شه