コード例 #1
0
 /// <summary>
 /// 使用与指定参数匹配程度最高的构造函数创建指定类型的直接代理类型的实例,并将其代理委托设定为指定的委托。
 /// </summary>
 /// <typeparam name="T">原型类型,应为接口或非密封类。</typeparam>
 /// <param name="arguments">用于创建代理对象的参数数组。</param>
 /// <param name="handler">方法调用所用的代理委托。</param>
 /// <returns>一个不使用参数创建并使用指定代理委托的代理类型的实例。</returns>
 /// <exception cref="ArgumentException">
 /// <typeparamref name="T"/> 不是公共接口,也不是公共非密封类。</exception>
 /// <exception cref="MissingMethodException"><typeparamref name="T"/>
 /// 类型不包含与 <paramref name="arguments"/> 相匹配的构造函数。</exception>
 /// <exception cref="MethodAccessException"><typeparamref name="T"/>
 /// 类型中与 <paramref name="arguments"/> 相匹配的构造函数的访问级别过低。</exception>
 public static T CreateDirectProxy <T>(object?[]?arguments, MethodInvokeHandler?handler = null)
     where T : class
 {
     return((T)DynamicProxyServices.CreateDirectProxy(typeof(T), arguments, handler));
 }
コード例 #2
0
 /// <summary>
 /// 使用指定的代理对象创建代理类型的实例,并将其代理委托设定为指定的委托。
 /// </summary>
 /// <typeparam name="T">原型类型,应为接口。</typeparam>
 /// <param name="instance">要为其提供代理的对象。</param>
 /// <param name="handler">方法调用所用的代理委托。</param>
 /// <returns>一个为指定对象提供以指定委托定义的代理的代理类型的实例。</returns>
 /// <exception cref="ArgumentNullException">
 /// <paramref name="instance"/> 为 <see langword="null"/>。</exception>
 public static T CreateWrapProxy <T>(T instance, MethodInvokeHandler?handler = null)
     where T : class
 {
     return((T)DynamicProxyServices.CreateWrapProxy(typeof(T), instance, handler));
 }