What is the integral form of your enumeration?
This is usually the first questions I ask when making then enumeration because that is the only difference.
For instance your enumeration is representing states of a model. What are the integral values of that type?
Are they int? Are they char? does it matter?
You would then define the enumeration like so...
public enum ConnectionOwnership : int { Internal = 0, External, Other, Another = 4 }
The only reason the integral type matters is how the enumeration is used in binary when performing bit wise functions such as AND, OR, XOR, SHL, SHR
The default type is int which can be written in short hand like so
public enum ConnectionOwnership { Invalid = -1, Internal, External, Other, Another = 4 }
The type of element using the Enum is never ever relevant to the declaration of the enumeration.
Take DayOfWeek for Example (System.DayOfWeek I Believe)
Does it care what type is using the enumeration... no it does not... because DayOfWeek is a DayOfWeek regardless of the type which is using the enumeration.
If it is you need another type of DataStructure such as a GenericEnum or Enum<t>.. The problem you will find is that enum cannot be a specified in a where constraint... There is a reason for this.
See this page for the work around which is essentially Enum<t> but does not limit T to be a enum...
http://devlicious.com/blogs/christopher_bennage/archive/2007/09/13/my-new-little-friend-enum-lt-t-gt.aspx[
^]
I think I can see what you are trying to do... you want each ConnectionOwnership type to be related to the type in which is instantiated.. What I cannot see is why this is relevant... What you would end up having is multiple enum classes generated with the same exact values. How is this at all useful? Only if the generated enum classes have different values for instance if a Connection<TypeA> is created and then a Connection<TypeB> the values for Internal and External may be swapped... E.g. Connection<TypeA> would have Internal as 1 and External as 0 where Connection<TypeB> may have Internal 0 and External 1.
Consider the ramifications... Why is this a enum? and further more why is that useful? Would it not be more useful to have a constant concrete concept of ConnectionOwnership which is not generic and means the same thing in all instances regardless of the type of the Connection? I believe so.. and I am fairly sure that what you are doing is a violation of some principal of the GOF and OOP. Please review them to ensure you are doing the needful thing...
Hopefully I have answered your question and given you greater insight into what you are actually doing. If you have further questions please let us know and we will try to help.