You are creating an application that manages information about your company’s products. The application
includes a class named Product and a method named Save. The Save() method must be strongly typed. It
must allow only types inherited from the Product class that use a constructor that accepts no parameters. You
need to implement the Save() method. Which code segment should you use?
A.
public static void Save(Product target)
{
…
}
B.
public static void Save<T>(T target) where T: new(), Product
{
…
}
C.
public static void Save<T>(T target) where T: Product
{
…
}
D.
public static void Save<T>(T target) where T: Product, new()
{
…
}
Explanation:
When you define a generic class, you can apply restrictions to the kinds of types that client code can use for
type arguments when it instantiates your class. If client code tries to instantiate your class by using a type that is
not allowed by a constraint, the result is a compile-time error. These restrictions are called constraints.
Constraints are specified by using the where contextual keyword. http://msdn.microsoft.com/en-us/library/
d5x73970.aspx