English 中文(简体)
Representing a C# Generic Method in a UML Class Diagram
原标题:

I have the following interface:

public interface IRegisterable
{
   T Register<T>(string username, string passw) where T : User, ICanLogin, new();
}

User is an abstract class, and ICanLogin is another interface.

Now, I want to represent the above interface with its method in a UML Class Diagram, in Visio.

How can I represent the above generic method with its constraints in a Class Diagram ?

最佳回答

UML does not support type parametric methods directly.

About the closest you ll get is to define a nested class which has the type constraints with a stereotype which you will interpret as meaning it s a type parameter, and define the Register operation in terms of that.

+---------------------------------------------------+
|                   «interface»                     |
|                  IRegisterable                    |
+---------------------------------------------------+
| + Register (string username, string passw) : T    |
+---------------------------------------------------+

    +---------------+           +---------------+
    |  «abstract»   |           |  «interface»  |
    |     User      |           |   ICanLogin   |
    +---------------+           +---------------+
            .                           .
           /_                         /_
            |                           .
            +-----------+   .............
                        |   .
                +-------------------+              
                |  «typeParameter»  |
                | IRegisterable::T  |
                +-------------------+           
                | + new()           |
                +-------------------+           

    note: T is a nested class within IRegisterable
问题回答

UML DOES support parametric types (other things can be parametrized as well, and things other than types can be used as parameters as well).





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签