@@ -29,6 +29,7 @@ public interface IService
2929 object Property { get ; }
3030 object Method ( ) ;
3131
32+ object ProxyProperty { [ Interceptor ] get ; }
3233 [ Interceptor ]
3334 object ProxyMethod ( ) ;
3435 }
@@ -38,6 +39,7 @@ public class Service : IService
3839 public virtual object Property { get ; } = 1 ;
3940 public virtual object Method ( ) => 1 ;
4041
42+ public virtual object ProxyProperty { [ Interceptor ] get ; } = new ( ) ;
4143 [ Interceptor ]
4244 public virtual object ProxyMethod ( ) => new ( ) ;
4345 }
@@ -47,38 +49,35 @@ public class CovariantReturnsService : Service
4749 public override string Property { get ; } = nameof ( CovariantReturnsService ) ;
4850 public override string Method ( ) => nameof ( CovariantReturnsService ) ;
4951
52+ public override string ProxyProperty { [ Interceptor ] get ; } = nameof ( CovariantReturnsService ) ;
5053 [ Interceptor ]
5154 public override string ProxyMethod ( ) => nameof ( CovariantReturnsService ) ;
5255 }
5356
5457 public class DerivedCovariantReturnsService : CovariantReturnsService
5558 {
59+ public override string ProxyProperty { [ Interceptor ] get ; } = nameof ( DerivedCovariantReturnsService ) ;
5660 [ Interceptor ]
5761 public override string ProxyMethod ( ) => nameof ( DerivedCovariantReturnsService ) ;
5862 }
5963
60- public class DerivedCovariantReturnsService2 : DerivedCovariantReturnsService
61- {
62- public override string Property { get ; } = nameof ( CovariantReturnsService ) ;
63- }
64-
6564 [ Fact ]
6665 public void CreateClassProxy_CovariantReturnsService_Test ( )
6766 {
6867 var service = ProxyGenerator . CreateClassProxy < CovariantReturnsService > ( ) ;
6968 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Property ) ;
7069 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Method ( ) ) ;
70+ Assert . Equal ( nameof ( CovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyProperty ) ;
7171 Assert . Equal ( nameof ( CovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyMethod ( ) ) ;
7272 }
7373
7474 [ Fact ]
7575 public void CreateClassProxy_DerivedCovariantReturnsService_Test ( )
7676 {
77- return ; // 会死锁, 待修. DefineClassPropertyMethod
78-
7977 var service = ProxyGenerator . CreateClassProxy < DerivedCovariantReturnsService > ( ) ;
8078 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Property ) ;
8179 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Method ( ) ) ;
80+ Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyProperty ) ;
8281 Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyMethod ( ) ) ;
8382 }
8483
@@ -88,6 +87,7 @@ public void CreateClassProxy_Service_CovariantReturnsService_Test()
8887 var service = ProxyGenerator . CreateClassProxy < Service , CovariantReturnsService > ( ) ;
8988 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Property ) ;
9089 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Method ( ) ) ;
90+ Assert . Equal ( nameof ( CovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyProperty ) ;
9191 Assert . Equal ( nameof ( CovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyMethod ( ) ) ;
9292 }
9393
@@ -97,6 +97,7 @@ public void CreateClassProxy_Service_DerivedCovariantReturnsService_Test()
9797 var service = ProxyGenerator . CreateClassProxy < Service , DerivedCovariantReturnsService > ( ) ;
9898 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Property ) ;
9999 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Method ( ) ) ;
100+ Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyProperty ) ;
100101 Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyMethod ( ) ) ;
101102 }
102103
@@ -106,6 +107,7 @@ public void CreateClassProxy_CovariantReturnsService_DerivedCovariantReturnsServ
106107 var service = ProxyGenerator . CreateClassProxy < CovariantReturnsService , DerivedCovariantReturnsService > ( ) ;
107108 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Property ) ;
108109 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Method ( ) ) ;
110+ Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyProperty ) ;
109111 Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyMethod ( ) ) ;
110112 }
111113
@@ -115,6 +117,7 @@ public void CreateInterfaceProxy_IService_CovariantReturnsService_Test()
115117 var service = ProxyGenerator . CreateInterfaceProxy < IService , CovariantReturnsService > ( ) ;
116118 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Property ) ;
117119 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Method ( ) ) ;
120+ Assert . Equal ( nameof ( CovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyProperty ) ;
118121 Assert . Equal ( nameof ( CovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyMethod ( ) ) ;
119122 }
120123
@@ -124,6 +127,7 @@ public void CreateInterfaceProxy_IService_DerivedCovariantReturnsService_Test()
124127 var service = ProxyGenerator . CreateInterfaceProxy < IService , DerivedCovariantReturnsService > ( ) ;
125128 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Property ) ;
126129 Assert . Equal ( nameof ( CovariantReturnsService ) , service . Method ( ) ) ;
130+ Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyProperty ) ;
127131 Assert . Equal ( nameof ( DerivedCovariantReturnsService ) + nameof ( Interceptor ) , service . ProxyMethod ( ) ) ;
128132 }
129133}
0 commit comments