2015-04-20 5 views
-2

есть способ в C#, чтобы использовать общий класс с дополнительным типом.Общие классы: необязательный тип

Для примера

Класс:

public abstract class A<Type> : Interface where Type : new() 
{ 
    public string Method1(int param) 
    { ... } 
} 

Вызов:

A<SomeType>.Method1(9); 
A.Method1(9); 
+2

Нужен ли этому методу доступ к параметру общего типа? если не добавить его в базовый класс. –

+0

Нет, не так ли, поэтому нет ограничений или чего-то еще? – Doppelmeter

+1

Непонятно, чего вы пытаетесь достичь, но я настоятельно рекомендую не называть ваш параметр типа 'Type' ..., и это не синтаксис для указания аргумента типа для общего метода. –

ответ

2

Я думаю, вы должны получить ваш дизайн соображал.

У вас либо есть общий класс с полными именами типов, либо у вас есть не общий класс. Это либо один из них. У вас нет половины занятий.

Таким образом, вы могли бы написать это:

public class A : Interface 
{ 
    public string Method1(int param) 
    { ... } 
} 

A a = new A(); 
string output = a.Method1(10); 

Или, если вы сделаете Method1 статическую:

string output = A.Method1(10); 

И тогда вы могли бы, возможно получить, что один для общего варианта:

public class B<T> : A where T : new() 
{ 
} 

B<int> b = new B<int>(); 
string output = b.Method1(10); 
Смежные вопросы