# Microsoft.Extensions.Options

``` diff
 namespace Microsoft.Extensions.Options {
-    public interface IOptions<out TOptions> where TOptions : class, new()
+    public interface IOptions<out TOptions> where TOptions : class
-    public interface IOptionsFactory<TOptions> where TOptions : class, new()
+    public interface IOptionsFactory<TOptions> where TOptions : class
-    public interface IOptionsSnapshot<out TOptions> : IOptions<TOptions> where TOptions : class, new()
+    public interface IOptionsSnapshot<out TOptions> : IOptions<TOptions> where TOptions : class
     public static class Options {
-        public static IOptions<TOptions> Create<TOptions>(TOptions options) where TOptions : class, new();
+        public static IOptions<TOptions> Create<TOptions>(TOptions options) where TOptions : class;
     }
-    public class OptionsFactory<TOptions> : IOptionsFactory<TOptions> where TOptions : class, new() {
+    public class OptionsFactory<TOptions> : IOptionsFactory<TOptions> where TOptions : class {
+        protected virtual TOptions CreateInstance(string name);
     }
-    public class OptionsManager<TOptions> : IOptions<TOptions>, IOptionsSnapshot<TOptions> where TOptions : class, new()
+    public class OptionsManager<TOptions> : IOptions<TOptions>, IOptionsSnapshot<TOptions> where TOptions : class
-    public class OptionsMonitor<TOptions> : IDisposable, IOptionsMonitor<TOptions> where TOptions : class, new()
+    public class OptionsMonitor<TOptions> : IDisposable, IOptionsMonitor<TOptions> where TOptions : class
-    public class OptionsWrapper<TOptions> : IOptions<TOptions> where TOptions : class, new()
+    public class OptionsWrapper<TOptions> : IOptions<TOptions> where TOptions : class
 }
```

