Tôi đang cố gắng xây dựng một phương pháp nhà máy sử dụng tính năng generics của C#.C# Generics - Ràng buộc về các thông số loại
Trong phương pháp nhà máy này, tôi muốn hạn chế nó đối với một số lớp cụ thể, tất cả đều không có hàm tạo mặc định.
Đây là ví dụ của tôi. Ai đó có thể cho tôi biết nếu nó có thể chạy nó?
public class AbstractClass {
//this abstract class does not have a default constructor, nor its subclasses
public AbstractClass(SomeClassName obj) {
//use obj for initialization
}
}
//this factory class should create objects of type T that inherit
//from AbstractClass and invoke the non-default constructor
public class FactoryClass {
public static T BuildObject<T> (SomeClassName obj) where T: AbstractClass {
return new T(obj); //does not work?!?!?!
}
}
//Edit: ANSWER!!!
public static T BuildObject<T>(SomeClassUsedForTheConstructor item) where T : SomeAbstractClass {
return (T) Activator.CreateInstance(typeof (T), item);
}
Đây là những gì tôi sử dụng để sử dụng, nhưng bây giờ tôi sử dụng 'Activator.CreateInstance' như đã đề cập bởi Brian. –