.NET Fiddle

CSharp · Console

/Program.cs

using System;


public interface Container {
	int ID {get; set;}
}

public class Auto : Container {
	public int ID {get; set;}
	
}

public class One<T>  where T : Container{
	public void Do(T x) {
		Console.WriteLine(x.ID);
	}
}


public class Two {
	public void Do<T>(T x) where T: Container {
		Console.WriteLine(x.ID);
	}
}






public class Program
{
	
	
	public static void Main()
	{
		var skoda = new Auto{
		 ID = 10
		};
		
		
		var one = new One<Auto>();
		one.Do(skoda);
		
		var two = new Two();
		two.Do<Auto>(skoda);
		
		var twoBetter = new Two();
		twoBetter.Do(skoda); // type inference - pozna typ
		
		
	}
}
;