public class Thing
{
public int Id { get; set; }
}
대신
public class Thing
{
public ThingKey Id { get; set; }
}
public class ThingKey
{
public ThingKey(Func<int> generator) => Id = generator();
public ThingKey(int id) => Id = id;
public int Id { get; private set; }
}