Visual studio Visual Studio 2008类设计器-关联

Visual studio Visual Studio 2008类设计器-关联,visual-studio,visual-studio-2008,class-design,Visual Studio,Visual Studio 2008,Class Design,我们正试图将VS2008类设计器用于类似UML的类图。然而,当我们在两个类之间创建“关联”链接时,VS2008正在向代码中添加行!我们不想要这个 我们不想这样做的一个原因是,我们的关联(通过集合参数表等)理念与VS2008不同。例如,我们希望在类图中包含以下类型的关联: A类是B类的财产 类A位于类B的集合属性内 类A实例化并使用类B的属性或方法

我们正试图将VS2008类设计器用于类似UML的类图。然而,当我们在两个类之间创建“关联”链接时,VS2008正在向代码中添加行!我们不想要这个

我们不想这样做的一个原因是,我们的关联(通过集合参数表等)理念与VS2008不同。例如,我们希望在类图中包含以下类型的关联:

  • A类是B类的财产
  • 类A位于类B的集合属性内
  • 类A实例化并使用类B的属性或方法

  • 更新:我使用了Visio,但是我认为有一些工具允许UML建模往返,包括Enterprise Architect和可能的VS2010。

    使用Visio。Visual Studio中的类图设计器旨在与代码紧密集成并保持同步。

    您应该澄清一下。“A类是B类的财产”是什么意思?你的意思是B类有“a”类的属性吗

    这不是UML术语中的关联,而是依赖关系。事实上,您的所有示例都是依赖项,而不是关联


    你是说:

    public class ClassA {}
    
    public class ClassB
    {
        public ClassA Property1 {get;set;}
    }
    
    如果这就是你的意思,那么我会把它理解为

    类B有一个名为 “财产1”。属性1属于类型1 “A类”

    在UML中,这不是一种关联,而是一种依赖关系


    我承认属性集合中有一个子集确实与关联直接对应。事实上,我上面的例子就是这个子集的一个成员

    一个反例(以及我所想的)是:

    很抱歉,我考虑的是一般情况,而不是具体情况

    原始问题的真正答案已经给出:类设计器是一个类设计器,而不是UML类图工具。它使用了一种类似于UML类图的符号,但它不是一种生成类图的工具——它是一种设计.NET类的工具


    将此与Visual Studio 2010中可用的UML类图进行对比,后者是UML第一,类设计第二。

    类设计器不是像Visio这样的通用绘图工具。它是POCO类的“winforms设计器”。这就像在表单上放置一个标签作为注释,但不希望visual studio实际创建标签。

    visual studio 2010最终支持UML类图以及序列图、组件图、用例图和活动图。编辑这些图表不会影响您的代码。您还可以从代码中创建序列图、依赖关系图和层关系图,并对它们进行编辑,以便将重点放在所需的区域上。对这些关系图的更改也不会影响您的代码


    我已经在上发布了更多链接以获取更多信息。

    基本属性/方法同步将非常有用,但关联同步似乎非常狭义地定义了关联的概念。“属性”和“关联”等术语对不同的人、作者和标准有不同的含义。Visual Studio使用自己的定义。:-)是的,事实证明Visio更合适。#1只是意味着一个类作为另一个类的属性存在。我不是一个UML专家,但我猜VS2008类设计器缺少了许多完全支持UML所需的特性……在这种情况下,我想一个问题是,是否有任何UML类设计器能够与VS2008很好地集成?(开源是一个加号)如果我上面的新例子不是你的意思,你能举个例子说明你的意思吗?@John:-1,因为UML不谈论代码,而是关于概念建模。您不能通过查看一段代码来说明UML中的内容。UML中的关联可以通过多种方式在代码中有效(正确)实现。请引用标准中的关联如何用于对属性或方法的返回类型建模。请提供您所指内容的代码示例。
    public class ClassA {}
    
    public class ClassB
    {
        public ClassA Property1 
        {
            get {/* perform some arbitrary calculation, then return the result */}
            set {}
        }
    }