2016-06-28 4 views
-1

Возможно ли создать общий class<T>, который будет иметь тип Tbase class?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

yes, public class Generic : T – Kowalski

+0

Я иду эту ошибку 'Не получается из 'T', потому что это параметр типа' –

+0

Это больше подходит для комментариев, так как это не так. не отвечая на вопрос. –

0

Можно использовать ограничение на T, таким образом, заставляя T быть из BaseClass типа, например:

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 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^