{"id":564,"date":"2023-09-08T19:54:23","date_gmt":"2023-09-09T01:54:23","guid":{"rendered":"https:\/\/kop.lat\/blog\/?p=564"},"modified":"2023-09-08T19:55:00","modified_gmt":"2023-09-09T01:55:00","slug":"c-dotnet-interfaces","status":"publish","type":"post","link":"https:\/\/kop.lat\/blog\/c-dotnet-interfaces\/","title":{"rendered":"List of 50 most common C# .Net Interfaces"},"content":{"rendered":"\n<p>In C#, interfaces define a contract that classes can implement, specifying a set of methods, properties, and events that the implementing classes must provide. Here&#8217;s a list of 50 common interfaces in C# along with brief explanations and common methods for each, along with code snippet examples for some of them:<\/p>\n\n\n\n<ol>\n<li><strong>IEnumerable<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Method<\/strong>: <code>GetEnumerator()<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Provides a way to iterate through a collection.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   IEnumerable&lt;int&gt; numbers = new List&lt;int&gt; { 1, 2, 3 };\n   foreach (var number in numbers) { \/* ... *\/ }<\/code><\/pre>\n\n\n\n<ol start=\"2\">\n<li><strong>IComparable<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Method<\/strong>: <code>CompareTo(object obj)<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Allows objects to be compared to determine their ordering.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   public class MyClass : IComparable&lt;MyClass&gt; { \/* ... *\/ }<\/code><\/pre>\n\n\n\n<ol start=\"3\">\n<li><strong>IEquatable<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Method<\/strong>: <code>Equals(T other)<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Ensures objects can be compared for equality.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   public class MyClass : IEquatable&lt;MyClass&gt; { \/* ... *\/ }<\/code><\/pre>\n\n\n\n<ol start=\"4\">\n<li><strong>IDisposable<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Method<\/strong>: <code>Dispose()<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Provides a way to release unmanaged resources.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   public class MyDisposable : IDisposable { \/* ... *\/ }<\/code><\/pre>\n\n\n\n<ol start=\"5\">\n<li><strong>IList<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Methods<\/strong>: <code>Add<\/code>, <code>Remove<\/code>, <code>IndexOf<\/code>, <code>Insert<\/code>, <code>Count<\/code>, <code>Clear<\/code>, <code>Contains<\/code>, <code>CopyTo<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Represents a non-generic collection of objects.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   IList&lt;int&gt; numbers = new List&lt;int&gt;();\n   numbers.Add(42);<\/code><\/pre>\n\n\n\n<ol start=\"6\">\n<li><strong>IDictionary<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Methods<\/strong>: <code>Add<\/code>, <code>Remove<\/code>, <code>TryGetValue<\/code>, <code>ContainsKey<\/code>, <code>ContainsValue<\/code>, <code>Keys<\/code>, <code>Values<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Represents a collection of key-value pairs.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   IDictionary&lt;string, int&gt; dictionary = new Dictionary&lt;string, int&gt;();\n   dictionary.Add(\"One\", 1);<\/code><\/pre>\n\n\n\n<ol start=\"7\">\n<li><strong>INotifyPropertyChanged<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Method<\/strong>: <code>PropertyChanged<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Notifies clients that a property value has changed.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   public class MyViewModel : INotifyPropertyChanged { \/* ... *\/ }<\/code><\/pre>\n\n\n\n<ol start=\"8\">\n<li><strong>IEnumerable<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Method<\/strong>: <code>GetEnumerator()<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Represents a strongly-typed collection of objects.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   IEnumerable&lt;int&gt; numbers = new List&lt;int&gt; { 1, 2, 3 };\n   foreach (var number in numbers) { \/* ... *\/ }<\/code><\/pre>\n\n\n\n<ol start=\"9\">\n<li><strong>IQueryable<\/strong>:<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><strong>Methods<\/strong>: Various LINQ methods<\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Enables LINQ query operations on data sources.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>   IQueryable&lt;string&gt; query = dataSource.Where(item =&gt; item.Length &gt; 5);<\/code><\/pre>\n\n\n\n<ol start=\"10\">\n<li><strong>IComparable<\/strong>:<ul><li><strong>Method<\/strong>: <code>CompareTo(T other)<\/code><\/li><li><strong>Explanation<\/strong>: Allows strongly-typed comparison of objects.<\/li><\/ul><code>public class MyClass : IComparable&lt;MyClass&gt; { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IEquatable<\/strong>:<ul><li><strong>Method<\/strong>: <code>Equals(T other)<\/code><\/li><li><strong>Explanation<\/strong>: Ensures strongly-typed equality comparison.<\/li><\/ul><code>public class MyClass : IEquatable&lt;MyClass&gt; { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IList<\/strong>:<ul><li><strong>Methods<\/strong>: <code>Add<\/code>, <code>Remove<\/code>, <code>IndexOf<\/code>, <code>Insert<\/code>, <code>Count<\/code>, <code>Clear<\/code>, <code>Contains<\/code>, <code>CopyTo<\/code><\/li><li><strong>Explanation<\/strong>: Represents a generic list of objects.<\/li><\/ul><code>IList&lt;int&gt; numbers = new List&lt;int&gt;(); numbers.Add(42);<\/code><\/li>\n\n\n\n<li><strong>IDictionary<\/strong>:<ul><li><strong>Methods<\/strong>: <code>Add<\/code>, <code>Remove<\/code>, <code>TryGetValue<\/code>, <code>ContainsKey<\/code>, <code>ContainsValue<\/code>, <code>Keys<\/code>, <code>Values<\/code><\/li><li><strong>Explanation<\/strong>: Represents a generic collection of key-value pairs.<\/li><\/ul><code>IDictionary&lt;string, int&gt; dictionary = new Dictionary&lt;string, int&gt;(); dictionary.Add(\"One\", 1);<\/code><\/li>\n\n\n\n<li><strong>IFormattable<\/strong>:<ul><li><strong>Method<\/strong>: <code>ToString(string format, IFormatProvider formatProvider)<\/code><\/li><li><strong>Explanation<\/strong>: Provides a mechanism for formatting objects as strings.<\/li><\/ul><code>public class MyData : IFormattable { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>ICloneable<\/strong>:<ul><li><strong>Method<\/strong>: <code>Clone()<\/code><\/li><li><strong>Explanation<\/strong>: Allows an object to create a shallow copy of itself.<\/li><\/ul><code>public class MyCloneable : ICloneable { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IConvertible<\/strong>:<ul><li><strong>Methods<\/strong>: Various conversion methods<\/li><li><strong>Explanation<\/strong>: Provides methods to convert an object to a different data type.<\/li><\/ul><code>int value = Convert.ToInt32(\"42\");<\/code><\/li>\n\n\n\n<li><strong>IAsyncResult<\/strong>:<ul><li><strong>Methods<\/strong>: <code>AsyncWaitHandle<\/code>, <code>CompletedSynchronously<\/code>, <code>IsCompleted<\/code><\/li><li><strong>Explanation<\/strong>: Represents the status of an asynchronous operation.<\/li><\/ul><code>IAsyncResult asyncResult = SomeAsyncMethod.BeginInvoke(callback, state);<\/code><\/li>\n\n\n\n<li><strong>ICustomFormatter<\/strong>:<ul><li><strong>Method<\/strong>: <code>Format(string format, object arg, IFormatProvider formatProvider)<\/code><\/li><li><strong>Explanation<\/strong>: Custom string formatting.<\/li><\/ul><code>public class MyFormatter : ICustomFormatter { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IEqualityComparer<\/strong>:<ul><li><strong>Methods<\/strong>: <code>Equals<\/code>, <code>GetHashCode<\/code><\/li><li><strong>Explanation<\/strong>: Compares objects for equality.<\/li><\/ul><code>IEqualityComparer&lt;string&gt; comparer = StringComparer.OrdinalIgnoreCase;<\/code><\/li>\n\n\n\n<li><strong>IComparer<\/strong>:<ul><li><strong>Method<\/strong>: <code>Compare<\/code><\/li><li><strong>Explanation<\/strong>: Compares two objects for ordering.<\/li><\/ul><code>IComparer&lt;int&gt; comparer = Comparer&lt;int&gt;.Default;<\/code><\/li>\n\n\n\n<li><strong>IAsyncResult<\/strong>:<ul><li><strong>Methods<\/strong>: <code>AsyncWaitHandle<\/code>, <code>CompletedSynchronously<\/code>, <code>IsCompleted<\/code><\/li><li><strong>Explanation<\/strong>: Represents the status of an asynchronous operation.<\/li><\/ul><code>IAsyncResult asyncResult = SomeAsyncMethod.BeginInvoke(callback, state);<\/code><\/li>\n\n\n\n<li><strong>IConvertible<\/strong>:<ul><li><strong>Methods<\/strong>: Various conversion methods<\/li><li><strong>Explanation<\/strong>: Provides methods to convert an object to a different data type.<\/li><\/ul><code>int value = Convert.ToInt32(\"42\");<\/code><\/li>\n\n\n\n<li><strong>ISerializable<\/strong>:<ul><li><strong>Methods<\/strong>: <code>GetObjectData<\/code><\/li><li><strong>Explanation<\/strong>: Provides control over object serialization.<\/li><\/ul><code>[Serializable] public class MySerializable : ISerializable { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IComparable<\/strong>:<ul><li><strong>Method<\/strong>: <code>CompareTo(T other)<\/code><\/li><li><strong>Explanation<\/strong>: Allows strongly-typed comparison of objects.<\/li><\/ul><code>public class MyClass : IComparable&lt;MyClass&gt; { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IList<\/strong>:<ul><li><strong>Methods<\/strong>: <code>Add<\/code>, <code>Remove<\/code>, <code>IndexOf<\/code>, <code>Insert<\/code>,<\/li><\/ul><code>Count<\/code>, <code>Clear<\/code>, <code>Contains<\/code>, <code>CopyTo<\/code><ul><li><strong>Explanation<\/strong>: Represents a generic list of objects.<\/li><\/ul><code>IList&lt;int&gt; numbers = new List&lt;int&gt;(); numbers.Add(42);<\/code><\/li>\n\n\n\n<li><strong>IDictionary<\/strong>:<ul><li><strong>Methods<\/strong>: <code>Add<\/code>, <code>Remove<\/code>, <code>TryGetValue<\/code>, <code>ContainsKey<\/code>, <code>ContainsValue<\/code>, <code>Keys<\/code>, <code>Values<\/code><\/li><li><strong>Explanation<\/strong>: Represents a generic collection of key-value pairs.<\/li><\/ul><code>IDictionary&lt;string, int&gt; dictionary = new Dictionary&lt;string, int&gt;(); dictionary.Add(\"One\", 1);<\/code><\/li>\n\n\n\n<li><strong>IFormattable<\/strong>:<ul><li><strong>Method<\/strong>: <code>ToString(string format, IFormatProvider formatProvider)<\/code><\/li><li><strong>Explanation<\/strong>: Provides a mechanism for formatting objects as strings.<\/li><\/ul><code>public class MyData : IFormattable { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IComparable<\/strong>:<ul><li><strong>Method<\/strong>: <code>CompareTo(object obj)<\/code><\/li><li><strong>Explanation<\/strong>: Allows objects to be compared to determine their ordering.<\/li><\/ul><code>public class MyClass : IComparable&lt;MyClass&gt; { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IEquatable<\/strong>:<ul><li><strong>Method<\/strong>: <code>Equals(T other)<\/code><\/li><li><strong>Explanation<\/strong>: Ensures objects can be compared for equality.<\/li><\/ul><code>public class MyClass : IEquatable&lt;MyClass&gt; { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IDisposable<\/strong>:<ul><li><strong>Method<\/strong>: <code>Dispose()<\/code><\/li><li><strong>Explanation<\/strong>: Provides a way to release unmanaged resources.<\/li><\/ul><code>public class MyDisposable : IDisposable { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>ISerializable<\/strong>:<ul><li><strong>Methods<\/strong>: <code>GetObjectData<\/code><\/li><li><strong>Explanation<\/strong>: Provides control over object serialization.<\/li><\/ul><code>[Serializable] public class MySerializable : ISerializable { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IComparer<\/strong>:<ul><li><strong>Method<\/strong>: <code>Compare<\/code><\/li><li><strong>Explanation<\/strong>: Compares two objects for ordering.<\/li><\/ul><code>IComparer&lt;int&gt; comparer = Comparer&lt;int&gt;.Default;<\/code><\/li>\n\n\n\n<li><strong>IEqualityComparer<\/strong>:<ul><li><strong>Methods<\/strong>: <code>Equals<\/code>, <code>GetHashCode<\/code><\/li><li><strong>Explanation<\/strong>: Compares objects for equality.<\/li><\/ul><code>IEqualityComparer&lt;string&gt; comparer = StringComparer.OrdinalIgnoreCase;<\/code><\/li>\n\n\n\n<li><strong>IAsyncDisposable<\/strong> (C# 8.0 and later):<ul><li><strong>Method<\/strong>: <code>DisposeAsync()<\/code><\/li><li><strong>Explanation<\/strong>: Provides asynchronous disposal of resources.<\/li><\/ul><code>public class MyAsyncDisposable : IAsyncDisposable { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>INotifyPropertyChanged<\/strong>:<ul><li><strong>Method<\/strong>: <code>PropertyChanged<\/code><\/li><li><strong>Explanation<\/strong>: Notifies clients that a property value has changed.<\/li><\/ul><code>public class MyViewModel : INotifyPropertyChanged { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IProgress<\/strong>:<ul><li><strong>Method<\/strong>: <code>Report(T value)<\/code><\/li><li><strong>Explanation<\/strong>: Reports progress updates during an asynchronous operation.<\/li><\/ul><code>async Task SomeAsyncOperation(IProgress&lt;int&gt; progress) { \/\/ Report progress: progress.Report(50); }<\/code><\/li>\n\n\n\n<li><strong>IHttpHandler<\/strong>:<ul><li><strong>Method<\/strong>: <code>ProcessRequest(HttpContext context)<\/code><\/li><li><strong>Explanation<\/strong>: Represents an HTTP handler.<\/li><\/ul><code>public class MyHandler : IHttpHandler { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IHttpModule<\/strong>:<ul><li><strong>Methods<\/strong>: <code>Init(HttpApplication context)<\/code>, <code>Dispose()<\/code><\/li><li><strong>Explanation<\/strong>: Represents an HTTP module.<\/li><\/ul><code>public class MyModule : IHttpModule { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IWebHostBuilder<\/strong> (ASP.NET Core):<ul><li><strong>Methods<\/strong>: Various methods for configuring a web host.<\/li><li><strong>Explanation<\/strong>: Provides a builder pattern for configuring and building an ASP.NET Core web host.<\/li><\/ul><code>public static IWebHostBuilder CreateWebHostBuilder(string[] args) =&gt; WebHost.CreateDefaultBuilder(args) .UseStartup&lt;Startup&gt;();<\/code><\/li>\n\n\n\n<li><strong>IConfiguration<\/strong> (ASP.NET Core):<ul><li><strong>Methods<\/strong>: Various methods for accessing configuration values.<\/li><li><strong>Explanation<\/strong>: Provides access to application configuration settings.<\/li><\/ul><code>IConfiguration configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile(\"appsettings.json\") .Build();<\/code><\/li>\n\n\n\n<li><strong>IApplicationBuilder<\/strong> (ASP.NET Core):<ul><li><strong>Methods<\/strong>: Various methods for configuring the application&#8217;s request pipeline.<\/li><li><strong>Explanation<\/strong>: Used to configure the middleware pipeline in ASP.NET Core applications.<\/li><\/ul><code>public void Configure(IApplicationBuilder app) { app.UseMiddleware&lt;CustomMiddleware&gt;(); }<\/code><\/li>\n\n\n\n<li><strong>IServiceCollection<\/strong> (ASP.NET Core):<ul><li><strong>Methods<\/strong>: <code>AddTransient<\/code>, <code>AddScoped<\/code>, <code>AddSingleton<\/code>, and more for configuring services.<\/li><li><strong>Explanation<\/strong>: Used for registering and configuring services in ASP.NET Core applications.<\/li><\/ul><code>public void ConfigureServices(IServiceCollection services) { services.AddTransient&lt;IMyService, MyService&gt;(); }<\/code><\/li>\n\n\n\n<li><strong>IRouteBuilder<\/strong> (ASP.NET Core):<ul><li><strong>Methods<\/strong>: Various methods for defining routes.<\/li><li><strong>Explanation<\/strong>: Used to configure routing in ASP.NET Core applications.<\/li><\/ul><code>public void Configure(IRouteBuilder routes) { routes.MapRoute(\"default\", \"{controller=Home}\/{action=Index}\/{id?}\"); }<\/code><\/li>\n\n\n\n<li><strong>IActionResult<\/strong> (ASP.NET Core):<ul><li><strong>Method<\/strong>: <code>ExecuteResultAsync(ActionContext context)<\/code><\/li><li><strong>Explanation<\/strong>: Represents the result of an MVC action method.<\/li><\/ul><code>public class MyController : Controller { public IActionResult Index() { return View(); } }<\/code><\/li>\n\n\n\n<li><strong>ILogger<\/strong> (ASP.NET Core):<ul><li><strong>Methods<\/strong>: Various logging methods (<code>LogInformation<\/code>, <code>LogError<\/code>, etc.).<\/li><li><strong>Explanation<\/strong>: Used for logging in ASP.NET Core applications.<\/li><\/ul><code>public class MyService { private readonly ILogger&lt;MyService&gt; _logger;public MyService(ILogger&amp;lt;MyService&amp;gt; logger) { _logger = logger; } public void DoWork() { _logger.LogInformation(\"Doing some work...\"); }}<\/code><\/li>\n\n\n\n<li><strong>IHostingEnvironment<\/strong> (ASP.NET Core):<ul><li><strong>Methods<\/strong>: <code>IsDevelopment<\/code>, <code>IsStaging<\/code>, <code>IsProduction<\/code>, etc.<\/li><li><strong>Explanation<\/strong>: Provides information about the hosting environment in ASP.NET Core applications.<\/li><\/ul><code>public class MyMiddleware { public MyMiddleware(IHostingEnvironment env) { if (env.IsDevelopment()) { \/\/ Do something in the development environment. } } }<\/code><\/li>\n\n\n\n<li><strong>IUrlHelper<\/strong> (ASP.NET Core):\n<ul>\n<li><strong>Methods<\/strong>: Various methods for generating URLs.<\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Used for generating URLs in ASP.NET Core applications.<br><code>csharp public IActionResult MyAction() { var url = Url.Action(\"Index\", \"Home\"); \/\/ ... }<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>48.<\/p>\n\n\n\n<p><strong>IQueryable<\/strong>:<br>&#8211; <strong>Methods<\/strong>: Various LINQ methods<br>&#8211; <strong>Explanation<\/strong>: Enables LINQ query operations on data sources.<br><code>csharp IQueryable&lt;string&gt; query = dataSource.Where(item =&gt; item.Length &gt; 5);<\/code><\/p>\n\n\n\n<ol start=\"49\">\n<li><strong>IAsyncEnumerable<\/strong> (C# 8.0 and later):<ul><li><strong>Methods<\/strong>: <code>GetAsyncEnumerator()<\/code><strong>Explanation<\/strong>: Represents an asynchronous sequence of values.<\/li><\/ul><code>IAsyncEnumerable&lt;int> asyncSequence = GetAsyncData(); await foreach (var item in asyncSequence) { \/* ... *\/ }<\/code><\/li>\n\n\n\n<li><strong>IAsyncEnumerator<\/strong> (C# 8.0 and later):\n<ul>\n<li><strong>Methods<\/strong>: <code>MoveNextAsync()<\/code>, <code>Current<\/code><\/li>\n\n\n\n<li><strong>Explanation<\/strong>: Provides asynchronous iteration over a sequence of values.<br><code>csharp IAsyncEnumerator&lt;int&gt; asyncEnumerator = GetAsyncData().GetAsyncEnumerator(); while (await asyncEnumerator.MoveNextAsync()) { var item = asyncEnumerator.Current; \/\/ ... }<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C#, interfaces define a contract that classes can implement, specifying a set of methods, properties, and events that the implementing classes must provide. Here&#8217;s a list of 50 common interfaces in C# along with brief explanations and common methods for each, along with code snippet examples for some of them: 48. IQueryable:&#8211; Methods: Various [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":252,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[51,12],"tags":[53,99,54,100],"_links":{"self":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/564"}],"collection":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/comments?post=564"}],"version-history":[{"count":2,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/564\/revisions"}],"predecessor-version":[{"id":566,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/564\/revisions\/566"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/media\/252"}],"wp:attachment":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/media?parent=564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/categories?post=564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/tags?post=564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}