2013-10-11 2 views
0

Я хочу, чтобы иметь возможность создавать конструктор, который может вызывать его типы, но без каких-либо ограничений.Наследование Проблемы с неопределенными типами

public class Box 
{ 
    public class Command 
    { 
     public string name; 
     public string num; 

     public Object PARAMS { get; set; }//<--- HERE 
    } 
} 

Я хочу PARAMS быть неопределенного типа, которые могли бы назвать одну из этих других классов

public class Person:Box 
{ 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
} 

или

public class Item:Box 
{ 
    public string ItemName { get; set; } 
    public string Info { get; set; } 
} 

Как я могу определить PARAMS? Я пытаюсь наследовать, но я не уверен, как обращаться к другим классам.

+2

Тип это как 'Box'. Я что-то упускаю? – Servy

+0

@Servy, возможно, вложенный класс не нужен, но да, с 'PARAMS' как' Box' будет работать. – Habib

+0

@Habib, вложенный класс не нужен, но я пытаюсь использовать Xml Serializer, и у меня есть формат набора, основанный на этой структуре. –

ответ

1

У вас есть два варианта - либо установить его тип как Box, или сделать его родовое:

public class Command<T> where T : Box 
{ 
    public string name; 
    public string num; 

    public T PARAMS { get; set; } 
} 

Или:

public class Command 
{ 
    public string name; 
    public string num; 

    public Box PARAMS { get; set; } 
} 
+0

Спасибо за помощь, я не был уверен, могу ли я определить его как «Коробку» при попытке достичь «Лица» –

+0

@albertSilva Вы можете, но вы будете (только) иметь доступ к свойствам и методам, определенным на 'Box'. Их виртуальное решение часто может решить проблемы. –

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