'T' must be a non-abstract type with a public parameterless constructor

发布时间 2023-04-10 17:25:47作者: Jack He

虽然工作10多年, 但是真正使用框架的项目很少很少... 所以对接口, 方法等约束毫无经验

今天做了个动态代理dispatchproxy的类, 但是在调用时却一直提示如下错误:

 

Error CS0310 'T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'XXX.CreateLogProxy<T>(T)' 

 

 

最终发现是静态方法CreateLogProxy的where T : new()约束引起的问题. 

public static class TransparentProxy
    {
      
        public static T CreateLogProxy<T>(T t) //where T : new()
        {
            dynamic tProxy = DispatchProxy.Create<T, LogProxyHandlerService<T>>();
            tProxy._Instance = t;

            return tProxy;
        }
    }