I have an interface called `Identifiable<TId>` that contains a single property Id of the given type. I want to create a generic class that takes one of these as a type parameter. It should be generic because I want to return concrete type, call other generic methods from within it and use things like `typeof(T)`.

This works fine:

```
public class ClassName<T, TId> where T : Identifiable<TId>

```

Problem is that calling code has to pass in two types. eg. `new ClassName<Person, int>()`

I am wondering if in .net 3.5 there is some way to write this so that TId could be inferred by T? Allowing the caller to just do `new ClassName<Person>()`?