Visual Studio UML 2010方法或属性代码生成

本文关键字:属性 代码生成 方法 2010 Studio UML Visual | 更新日期: 2023-09-27 18:19:02

我建立了一个visual studio 2010 UML建模项目,并创建了一个包含几个类的类图。代码生成工作得很好(我使用的是Visual Studio可视化和建模功能包中提供的代码生成模板)。每当我在一个类上点击"生成代码",我就会得到一个很好的类存根,包括这个类的属性和方法存根。

现在我正试图添加一些自定义代码到一个类的方法。我们的想法是,每次为类生成代码时,方法中都已经编写了一些代码(默认情况下,每个方法的内容都是"throw new system . notimplementedexception()")。据我所知,我首先需要创建一个tt/t4模板。然后,我需要在类设计器的方法属性中设置文本模板绑定—它们应该指向新创建的模板。我试过了,但我不知道如何让它工作。还是我误解了一个概念?什么好主意吗?

是的,我已经阅读了msdn关于代码生成和文本模板的文档,以及Oleg Sych的博客。但这两种方法都没有告诉我解决这个问题的方法。

Visual Studio UML 2010方法或属性代码生成

查看如何:从UML类图生成代码这篇文章:它说您需要安装一个Visual Studio Feature Pack来在UML项中获得生成代码命令。据我所知,你需要一个MSDN订阅来获得Feature Pack。所以我不能尝试。

有一节标题为自定义生成的代码命令,它确实建议与UML一起修改默认的T4模板。如果我是你,我没有选择获得MSDN订阅,我会编写一个插件(或VS扩展)并处理UML文件。这将要求您了解UML文件的内部工作原理,以便从UML生成c#。

这是一些*的UML。classdiagram文件。它适用于包含属性(字段)和操作的类。手动从这里开始是一个选项吗?

<?xml version="1.0" encoding="utf-8"?>
<logicalClassDesignerModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" xmlns:dm1="http://schemas.microsoft.com/dsltools/Kernel" xmlns:dm2="http://schemas.microsoft.com/dsltools/Component" xmlns:dm3="http://schemas.microsoft.com/dsltools/Activity" xmlns:dm4="http://schemas.microsoft.com/dsltools/Interaction" xmlns:dm5="http://schemas.microsoft.com/dsltools/UseCase" xmlns:dm6="http://schemas.microsoft.com/dsltools/UmlModelLibrary" xmlns:dm7="http://schemas.microsoft.com/dsltools/UmlDiagrams" xmlns:dm8="http://schemas.microsoft.com/dsltools/ModelStore" dslVersion="1.0.0.0" Id="0b035e1e-cf78-4d7b-a9c5-7ae15e246642" name="UMLClassDiagram1" linkedPackageId="30fb2a44-daa7-48cf-a306-c91b92f1dd7b" xmlns="http://schemas.microsoft.com/dsltools/LogicalClassDesigner">
  <packagedElements>
    <logicalClassDesignerModelHasTypes>
      <class Id="5d701b74-ed36-4baa-8318-0406964414ce" name="Class1" isAbstract="false" isLeaf="false" isActiveClass="false">
        <elementDefinition Id="82f92ae7-5d9b-4e64-8497-39c686ce2e5d" />
        <ownedAttributesInternal>
          <property Id="06827ace-592e-4cf7-bc13-946f073f2b73" name="Attribute2" isLeaf="false" isStatic="false" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="None" isComposite="false">
            <elementDefinition Id="3ebbef23-6573-42bf-8542-a3504f1ef28a" />
          </property>
        </ownedAttributesInternal>
        <ownedOperationsInternal>
          <operation Id="c061b4ea-9880-4674-8775-a7b360a2791d" name="Operation1" isLeaf="false" isStatic="false" isAbstract="false" concurrency="Sequential" isQuery="false">
            <elementDefinition Id="fe154244-f792-415d-8ebc-50d5e3a13362" />
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter Id="6cbf9775-608c-4a1c-bd17-14397c5ce0f3" direction="Return">
                  <elementDefinition Id="f9eabe6e-f42c-4ece-a0fc-6da2a5da11f0" />
                  <type_NamedElement>
                    <referencedTypeMoniker Id="7acb8bf9-6778-42b4-949c-5fbb1ed0a9bc" LastKnownName="String" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </logicalClassDesignerModelHasTypes>
    <packageHasNamedElement>
      <referencedType Id="7acb8bf9-6778-42b4-949c-5fbb1ed0a9bc" name="String" isAbstract="false" isLeaf="false" cachedFullName="String">
        <elementDefinition Id="59259974-6d55-42c6-b7bd-763d77ac8ef9" />
      </referencedType>
    </packageHasNamedElement>
  </packagedElements>
  <package Id="30fb2a44-daa7-48cf-a306-c91b92f1dd7b" name="ModelingProject1">
    <elementDefinition Id="7c93d198-9011-4ef0-b6ba-9bd438a05ad5" />
    <profileInstances>
      <packageHasProfileInstances Id="d0a13992-851d-423d-916d-e1976a34f3f6">
        <profileInstance Id="c7f4eecf-37de-4fb2-b7fa-14747958e8cd" name="StandardProfileL2">
          <elementDefinition Id="e34d544e-0fea-4ed6-ac5e-1b74119ac791" />
        </profileInstance>
        <elementDefinition Id="0caec977-1f8c-4ba3-a7db-8cc9ad9cc73b" />
      </packageHasProfileInstances>
      <packageHasProfileInstances Id="3b4e12c7-adee-45b2-a675-bca964c11f99">
        <profileInstance Id="c9e7d01a-6aa0-4697-8877-cdafc408d6ca" name="StandardProfileL3">
          <elementDefinition Id="532ea607-fb19-44b8-8502-3351b05452be" />
        </profileInstance>
        <elementDefinition Id="29349502-908c-4fda-9054-c48619c59ed0" />
      </packageHasProfileInstances>
    </profileInstances>
  </package>
</logicalClassDesignerModel>