MVC應用程序中的大多數模型都是普通的CLR對象(POCO),它們通常沒有基類,因爲它不是必需的。如果需要,你可以改變它。
在以下示例中,讓我們假設您有一個從某處進入的名爲param
的對象。
在C#中,你可以檢查對象是否是某種類型的在幾個方面的。您可以將該對象轉換爲該類型,並且如果沒有發生異常,則該轉換成功。 這不是首選的方法,但我想讓你知道是否是一個選項。
try {
var myType = (MyModel)param; // cast happens here
// do something with myType
}
catch{
// cast failed
}
另一種方法是使用as
操作。這是一個更好的方法,因爲如果轉換失敗,則不會拋出異常,您只需在變量中獲取null
。
var myType = param as MyModel;
if (myType != null) { // you have what you need.
...
}
另一種技術是is
操作者(另一個很好的方法)。這與as
類似,但是返回一個布爾值而不是對象,或者返回null,並且您可以在if
語句中將它內聯以執行強制轉換,並將其全部分配到一行代碼中。
if (param is MyModel myType){
// do something with myType
}
如果你做一個基類添加到您的模型,您可以使用該類型而不是類的名字在上面的例子。如果你願意,你可以放棄基類,並使用一個marker interface(一個沒有屬性的接口或聲明的函數),並檢查該類型。
public interface IModel {}
public class MyModel : IModel {
...
}
if (param is IModel myType){
// do something with myType
}
順便說一句,在項目更改文件夾名稱沒有任何區別,因爲基於命名空間C#的作品,而不是文件夾結構,對於大多數應用程序類型。只要文件夾和類文件包含在項目中,並且引用了命名空間,一切都很好。
希望你找到這個信息有用!