# Microsoft.AspNetCore.Components.Routing

``` diff
 namespace Microsoft.AspNetCore.Components.Routing {
-    public class NavLink : IComponent, IDisposable {
+    public class NavLink : ComponentBase, IDisposable {
-        public string ActiveClass { get; private set; }
+        public string ActiveClass { get; set; }
+        public IReadOnlyDictionary<string, object> AdditionalAttributes { get; set; }
+        public RenderFragment ChildContent { get; set; }
+        protected string CssClass { get; set; }
-        public NavLinkMatch Match { get; private set; }
+        public NavLinkMatch Match { get; set; }
+        protected override void BuildRenderTree(RenderTreeBuilder builder);
-        public void Configure(RenderHandle renderHandle);

+        protected override void OnInitialized();
+        protected override void OnParametersSet();
-        public Task SetParametersAsync(ParameterCollection parameters);

     }
-    public class Router : IComponent, IDisposable {
+    public class Router : IComponent, IDisposable, IHandleAfterRender {
-        public Assembly AppAssembly { get; private set; }
+        public Assembly AppAssembly { get; set; }
-        public RenderFragment AuthorizingContent { get; private set; }
+        public RenderFragment AuthorizingContent { get; set; }
-        public RenderFragment<AuthenticationState> NotAuthorizedContent { get; private set; }
+        public RenderFragment<AuthenticationState> NotAuthorizedContent { get; set; }
-        public RenderFragment NotFoundContent { get; private set; }
+        public RenderFragment NotFoundContent { get; set; }
+        public void Attach(RenderHandle renderHandle);
-        public void Configure(RenderHandle renderHandle);

+        Task Microsoft.AspNetCore.Components.IHandleAfterRender.OnAfterRenderAsync();
-        public Task SetParametersAsync(ParameterCollection parameters);

+        public Task SetParametersAsync(ParameterView parameters);
     }
 }
```

