2016-06-28 158 views
-1

是否可以創建通用類型T將是base class它的通用class<T>C#通用類型繼承

即:

MyClass<Base1> b1 = new MyClass<Base1>(); 
MyClass<Base2> b2 = new MyClass<Base2>(); 

b1.Name="test"; 
b2.ID=1; 

基類:

class Base1 
{ 
    protected string Name{ get; set;} 
} 

class Base2 
{ 
    protected int ID{ get; set;} 
} 

繼承類:

class MyClass<T>:T //here is the question is it possible dynamic inheritence 
{ 

} 
+4

「有可能」的答案通常是「你爲什麼不自己嘗試一下」? –

+0

不,但你可以使用組合代替 –

+0

當然我已經嘗試過之前(:我的目的是將一些屬性添加到不屬於我的庫類中,即:將UIAutomationID屬性添加到Button,Picker,Label,TextBox中,但 – Kowalski

回答

1

你的意思是這樣的嗎?

public class Generic<T> : T 
{ 

} 
+0

是的,公共類通用:T – Kowalski

+0

我去這個錯誤'不能從'T'派生,因爲它是一個類型參數' – 2016-06-28 10:00:03

+0

這更適合作爲評論,因爲它不會對這個問題沒有提供答案。 –

0

這是可能的使用的約束上T從而迫使T爲類型基類的,是這樣的:

public class baseclass 
{ 
    // base class code 
} 

// perfectly valid 
public class derived1<T> : baseclass where T : baseclass 
{ 
    // derived class code 
} 

這是不可能的編譯下面的代碼,由於T是一種類型的參數,以及編譯器必須從使用中推斷出它。顯然不能這樣做。

public class derived2<T> : T 
{ 
    // derived class code 
}