このオブジェクトのタイプが実行時まで不明な場合に、新しいオブジェクトを作成する際の最善のアプローチは何かについて、私は多少混乱しています。次の方法で Store という基本クラスがあるとします。
public class Store
{
public Store()
{
Inventory = new List<Inventory>()
}
public string Title { get; set;}
public ICollection<Inventory> Inventory { get; set; }
}
クラスから継承する別のクラスがあるとしStore
ます。それをペットストアと呼びましょう。StoreFactory
PetStore で、オブジェクトを作成するたびに呼び出されるコンストラクターを定義します。
ペットショップ
public PetStore(Store store) : base(store)
{
Title = ((PetStore)store).Title;
}
とリフレクションを使用StoreFactory
してオブジェクトをインスタンス化します。
public static Store FromTemplate(Store store)
{
Type type = Type.GetType(store.StoreType.ClassName);
Store newstore = Activator.CreateInstance(type, store) as Store;
return newstore;
}
今すぐ質問の核心に行きましょう。次のようにしてオブジェクトをインスタンス化する際の違いは何ですか:
Store newStore = StoreFactory.FromTemplate(existingPetStore);
と
dynamic newStore = StoreFactory.FromTemplate(existingPetStore);
質問を適切に表現しているかどうかはわかりません。少しわかりにくいかもしれませんが、その場合はご容赦ください。しかし、MVC がこれら 2 つをどのように区別し、最終的には、この場合に使用するのに最適なアプローチであるかを理解しようとしています。