Microsoft access 2010教程我很幸运,我的编程任务很简单。我所有的项目都是为了互联网,这意味着我的课程只需要处理我的程序的一个或两个方面。我总是有一个主要的功能来转储全球指示和程序。面向对象的编程(OOP)具有一点Web脚本,而没有多少代码重写就需要我所需要的一切。

然而,我知道并不是每个程序都那么容易开发。有些需要在每次方法调用时执行运行时任务。虽然您可以创建特殊的类来处理这些任务,但是您仍然需要编写代码,在编写的每个类和方法中调用这些类。幸运的是,我们有面向方面的编程。通过在c#代码中添加一些面向方面的编程,您可以与编程噩梦说再见。

了解如何在UDEMY的C#中使用OOP策略

什么是面向方面编程?

重用性不是一个新的概念。如果您一直在编程一段时间,您的程序已经包含多年来创建的几件可重用代码。对于我们大多数人来说,OOP给了我们我们所需要的一切。我们将每个类作为一个单一的目的对象,并根据需要设置我们的主要功能以调用这些对象。直到我们需要做一些更复杂的事情,就像记录程序的执行一样好。

对于应用程序执行跟踪,我们需要在调用每个方法时记录它们的名称,以及执行该方法花费的时间等内容。因此,我们编写一个简单的记录器类来处理这些任务。

我们的日志记录器类将具有这样的方法BeginLog,EndLog。这些方法将记录登录到文件或数据库的类。现在,我们让我们的程序的每种方法都执行这些记录方法,一旦开始,就在他们返回到我们的主要功能之前一次。我们还实现了跟踪调用方法的反思。

现在我们有了这样的东西:

核心数据方法BeginLog();Public static void method1(){…BeginLog();EndLog();} public static void method2(){…BeginLog();EndLog();}}

正如您可以看到的,即使使用可重用的代码,我们必须做很多编码以使记录器在广告中工作。我们可以使用某种面向方面的编程C#技术来删除一些重复码。我们创建属性和方面,例如“逻辑”以处理我们的日志记录代码。

面向方面编程(AOP)是在20世纪90年代开发的,它为我们提供了可以在每个级别的类中使用的属性/方面组件。这些方面作为类的元数据存在,我们可以在运行时实现这些元数据,以根据需要提供所需的服务。

了解在Udemy中扩展。net框架的其他方法

c#中的面向方面编程

AOP以组件框架的形式处理方面。它使用一种称为方面包装器的东西在编译时将方面方法插入到类中。然而,c#确实提供了一个方面包装器。c#是一种过程式和面向对象的混合编程语言。因此,我们必须结合使用特殊的类、名称空间和接口来模拟AOP。

首先,我们必须从ContextBoundClass继承支持aop的类。ContextBoundClass类允许我们扩展. net框架,为组件提供元数据,从而构建AOP组件。

公共级ContextClass:ContextBoundObject {}

我们将元数据添加到需要实现方面方法的类中。在c#中,我们将方面模块创建为属性类。如下所示,我们的属性类将有自己的属性。在我们的示例中,AttributeTarget属性控制属性对类/方法/属性的应用程序,等等。

[attributeusage(attributeTargets.class)]公共类ContextAtrBATtribute:属性{私有字符串_FILENAME;public contextatrbattribute(string filename){this._filename = filename;}}

了解如何在Udemy中实现C#接口

上下文在c#中

C#通过上下文实现AOP。上下文是具有相同方面值的对象的逻辑分组。他们建立了我们的方面拦截器可以从我们的对象拦截呼叫的地方。具有不同上下文的对象仍然可以彼此通信,而只能通过.NET上下文架构进行通信。

.NET通过我们可以根据我们可以自定义的邮件宿链,在比赛之间传输数据。这些汇款将我们的消息数据从宿缓存到下沉,直到它到达链条的末端,它在这里我们插入我们的方面拦截器。

C#运行时设置了这条消息链沉没的时刻我们将类设置为继承ContextBoundBoundObject。它还建立了代理对象,以帮助促进我们的比赛之间的沟通。透明代理从运行时取消消息,并在将其发送到真实代理之前将其序列化到堆栈中。真实代理代表了消息宿通道中的类。它将消息传递给通道中的频道以进行处理。在将其发送到链中的下一个宿者之前,每个接地都可以预处理消息。最后,Stack Builder接收器将消息序列化为堆栈并调用程序类的方法。运行时间然后反转该过程并通过链向后发送参数并返回值以进行后处理。

在链中的任何步骤,我们都可以实现面向方面的编程属性方法。为此,我们首先设置一些先决条件,然后向程序类中添加几个事件触发器。我们所有的先决条件都属于下面的System.Runtime.Remoting名称空间。因此,您希望将它们包含在所有AOP类中。

使用system.runtime.remoting.contexts;使用system.runtime.remoting.activation;使用system.runtime.remoting.messaging;

然后,我们必须确保我们的主类继承上下文录制,以便他们理解并可以调用我们的AOP程序。然后,我们必须创建我们的方面类,确保它们都实现了IContextAttribute接口并从属性类继承。然后,我们通过实现iContextProperty和icontributeObjectsink接口来添加我们的上下文属性。最后,我们使用iMessiageSink接口开发消息汇来完成该方面。从那一点开始,我们需要做的就是写下我们的代码。如果我们正确地实现了这些继承和接口,我们将在手上拥有面向方面的编程C#类。

c#顶级课程

C#8.0 - OOP - Ultimate指南 - 初学者到高级
Harsha Vardhan的Web大学
4.7 (200)
完成c# Unity Game Developer 3D
Ben Tristem, Rick Davidson(游戏开发者)电视团队
4.7 (27132)
畅销书
软件架构:c#中的元原则和坚实原则
工程师斯波克
4.5 (781)
c# 7、c# 8和c# 9有什么新功能
Dmitri Nesteruk
4.6 (573)
c#中级:类,接口和面向对象
狂舞Hamedani
4.6 (23392)
畅销书
c#高级主题:为技术面试做准备
狂舞Hamedani
4.5 (15278)
完整的c#大师级
Denis Panjuta,Tutorials.eu by Denis Panjuta
4.5 (12,515)
C#和.NET中的设计模式
Dmitri Nesteruk
4.4 (7,205)
畅销书

更c#的课程

c#的学生也会学习

赋予你的团队。引领行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求演示