Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Net aspect weaver支持关系aspect实现_.net_Aop_Aspectj - Fatal编程技术网

.net Net aspect weaver支持关系aspect实现

.net Net aspect weaver支持关系aspect实现,.net,aop,aspectj,.net,Aop,Aspectj,通过在AspectJ中实现关系方面,我可以用以下方式将两种类型的对象关联起来,请参见下面的代码示例。我想把这个概念转移到.net。你能告诉我一个.NETWeaver实现,它允许我做这个或类似的事情吗 关系方面由Pearce&Noble设计。请在此处阅读有关概念和实施的更多信息: 我对AOP相当陌生,我的有限知识是通过使用AspectJ获得的。我已经发现,AspectJ支持类型间声明和泛型类型的能力,以及能够在方面单元内对编织规则和建议进行分组的能力,使设计受益匪浅 使用简化关系方面关联学生和课程

通过在AspectJ中实现关系方面,我可以用以下方式将两种类型的对象关联起来,请参见下面的代码示例。我想把这个概念转移到.net。你能告诉我一个.NETWeaver实现,它允许我做这个或类似的事情吗

关系方面由Pearce&Noble设计。请在此处阅读有关概念和实施的更多信息:

我对AOP相当陌生,我的有限知识是通过使用AspectJ获得的。我已经发现,AspectJ支持类型间声明和泛型类型的能力,以及能够在方面单元内对编织规则和建议进行分组的能力,使设计受益匪浅

使用简化关系方面关联学生和课程对象的示例:

public class Course02 {
    public String title;
    public Course02(String title)   {this.title = title;    }
}

public class Student02 {
    public String name;
    public Student02(String name)   {this.name = name;  }
}

public aspect Attends02 extends SimpleStaticRel02<Student02, Course02> {}

public abstract aspect SimpleStaticRel02<FROM,TO>{ 

    public static interface Fwd{}
    public static interface Bwd{}

    declare parents : FROM implements Fwd;
    declare parents : TO implements Bwd;

    final private HashSet Fwd.fwd = new HashSet();
    final private HashSet Bwd.bwd = new HashSet();

    public boolean add(FROM _f, TO _t) {
        Fwd f = (Fwd) _f;
        Bwd t = (Bwd) _t;

        f.fwd.add(_t); // from adder to i fwd hashset
        return t.bwd.add(_f); // to adder from i bwd hashset
    }  

    public void printFwdCount(FROM _f)
    {
        Fwd f = (Fwd) _f;
        System.out.println("Count forward is: " + f.fwd.size());
    }

    public void printBwdCount(TO _t)
    {
        Bwd b  = (Bwd) _t;
        System.out.println("Count backward is: " + b.bwd.size());
    }

}

public class TestDriver {

    public TestDriver() {

        Course02 comp205 = new Course02("comp205");
        Course02 comp206 = new Course02("comp206");
        Student02 Joe = new Student02("Joe");
        Student02 Andreas = new Student02("Andreas");

        Attends02.aspectOf().add(Joe, comp205);
        Attends02.aspectOf().add(Joe, comp206);

        Attends02.aspectOf().printFwdCount(Andreas);
        Attends02.aspectOf().printFwdCount(Joe);
        Attends02.aspectOf().printBwdCount(comp206);
    }

    public static void main(String[] args) {
        new TestDriver();
    }
}

我不熟悉人际关系,但你看过吗?它是.NET的aspect weavers中的佼佼者。我猜它们支持关系方面。

我快速浏览了PostSharp,但没有仔细浏览。在投入大量时间之前,我想从专家那里得到一些建议。关系方面不是AspectJ的特性。它是由Pearce+Noble设计的类库,利用AspectJ的AOP特性,主要是类型间声明。