gpt4 book ai didi

c# - DynamicProxy 类是否与智能感知/类型安全配合得很好?

转载 作者:行者123 更新时间:2023-11-30 17:53:58 24 4
gpt4 key购买 nike

我一直在研究使用 DynamicProxy 类,但我对这个概念还很陌生。在我走得太远之前,我想知道这些类与 IntelliSense 和类型安全的配合情况如何?

我只是害怕使用像 Castle DynamicProxy 这样的东西(或其他一些),并在设置完所有内容后发现使用我的对象不提供 IntelliSense 或类型安全。任何人都可以阐明这一点吗?

最佳答案

I'm looking for a straight answer on how DynamicProxy classes are used, and whether or not they support intellisense, and if so... how?

好吧,在解释如何 DynamicProxy 类工作时,您将清楚地了解为什么它们是类型安全的,以及它们如何能够很好地与智能感知一起工作。


首先,让我们了解一下 DynamicProxy 实际上是什么。代理类是代表另一个类处理成员调用的类。这可以通过继承(最常见)或组合来完成。所以,如果你要手写一个代理类,它可能是这样的:

public class Customer
{
public virtual string Name { get; set; }
// etc...
}

public class CustomerProxy : Customer
{
public override string Name
{
get
{
// Do additional functionality...

return base.Name;
}
set
{
// Do additional functionality...

base.Name = value;
}
}
}

两 (2) 个关键特性在继承和多态性的正常工作中起着至关重要的作用。所以,要使用 Customer无缝上课,ProxyGenerator简单地创建一个 CustomerProxy 的实例类,但将其作为 Customer 的类型返回.这基本上与做 Customer customer = new CustomerProxy(); 是一样的。 . “动态”部分实际上与 .NET 没有任何关系 dynamic关键字,但应该读作“运行时”,因为它只是意味着代理类是在运行时(应用程序运行时)生成的,而不是在编译时生成的。哦,如果您想知道它是如何做到这一点的,它使用 System.Reflection.Emit


这是 DynamicProxy 的简单版本是。在创建这些代理类时,不同的框架提供不同的特性。例如,在 CaSTLe Windsor 的 DynamicProxy 中,可以创建 Mixins 并将附加接口(interface)应用于这些代理类——也就是说,您生成的代理类可能看起来像这样:public class CustomerProxy : Customer, ISomeInterface { ... } ,即使 Customer类本身没有实现 ISomeInterface .这是 CaSTLe 的 DynamicProxy ( http://kozmic.net/dynamic-proxy-tutorial/ ) 的一个非常好的资源。它介绍了各种功能和这些功能的用例。

关于c# - DynamicProxy 类是否与智能感知/类型安全配合得很好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com