解決できないように見える問題があります。
次のように設定されたクラスがあるとします。
public abstract class GenericCustomerInformation
{
//abstract methods declared here
}
public class Emails : GenericCustomerInformation
{
//some new stuff, and also overriding methods from GenericCustomerInformation
}
public class PhoneNumber : GenericCustomerInformation
{
//some new stuff, and also overriding methods from GenericCustomerInformation
}
ここで、次のような関数設定があるとします。
private void CallCustomerSubInformationDialog<T>(int iMode, T iCustomerInformationObject)
{
//where T is either Emails or PhoneNumber
GenericCustomerInformation genericInfoItem;
//This is what I want to do:
genericInfoItem = new Type(T);
//Or, another way to look at it:
genericInfoItem = Activator.CreateInstance<T>(); //Again, does not compile
}
CallCustomerSubInformationDialog<T>
関数には、基本型の変数があり、入っGenericCustomerInformation
てくるものは何でもインスタンス化したいT
(派生型のいずれか:Emails
またはPhoneNumber
)
簡単なことは、一連のif
条件を使用することですが、コードが必要以上に大きくなるため、条件付きで何もしたくありません..