当这个对象的类型在运行时未知时,当创建一个新对象时,最好的方法是什么,我有点困惑。假设我有一个名为 Store 的基类,其方式如下:
public class Store
{
public Store()
{
Inventory = new List<Inventory>()
}
public string Title { get; set;}
public ICollection<Inventory> Inventory { get; set; }
}
现在假设我有另一个从该类继承的Store
类。我们称之为 PetStore。在 PetStore 中,我定义了一个构造函数,每当StoreFactory
创建对象时都会调用它:
宠物店
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 如何区分这两者,最终,这是在这种情况下使用的最佳方法。