2015-05-20 47 views
3

我有這樣獲取類名

public class BaseClass 
    { 
     public string Request { get; set;} 
    } 

類和我有類是這樣的:

public class ExtendClass : BaseClass 
{ 

} 

所以實際的財產請求將始終與設置ExtendClass的名稱。所以它實際上會是Request="ExtendClass"

我有許多類擴展BaseClass。我知道我只是可以傳遞字符串,但是可以做到這一點嗎?

+1

更多地討論問題。你想每次擴展類創建它應該設置請求=「ExtendClass」? – Amit

+1

完全不清楚你在找什麼,當你調用任何繼承BaseClass的子類時,你想要設置Request屬性,就像調用ExtendedClass時那樣,那麼你應該能夠設置Request屬性。你可以在視圖中使用構造函數來做到這一點 –

+1

@blueboyz [Object.GetType](https://msdn.microsoft.com/en-us/library/system.object.gettype.aspx)方法不適合你嗎? – IronGeek

回答

7

您可以使用object.GetType這將總是返回頂部類型的層次結構(所以最後的派生類):

public string Request 
{ 
    get 
    { 
     return this.GetType().Name; 
    } 
} 

Name將返回short類型名稱,沒有命名空間。如果你也想這樣,你應該使用FullName

2

您有多種選擇。例如,你可以使用感言:

public string Request { get {return this.GetType().Name; }} 

或者你可以把它更加明確,用抽象的屬性(可以指定不唯一的類名這樣):

public abstract class BaseClass 
{ 
    public abstract string Request { get; } 
} 
class ExtendClass : BaseClass 
{ 
    public override string Request { get {return "ExtendClass"; } } 
}