2011-07-12 5 views
1

У меня есть 2 поля какИспользование атрибута для создания экземпляра класса

private IFruit fruit; 
private Banana banana; 

Экземпляр Banana создается так:

var banana = new Banana(fruit); 

Я хочу создать атрибут для Banana полей сделать работа по созданию Banana экземпляра для меня!

+1

для Google для инъекций зависимостей. Он делает то, что вы ищете. – leppie

+1

не очень понятно, что вы хотите, извините. Можете ли вы, пожалуйста, пересмотреть свой вопрос? – Tigran

+0

Вы также можете посмотреть шаблон [Factory] (http://en.wikipedia.org/wiki/Factory_method_pattern). Но все же ваш вопрос недостаточно ясен, чтобы дать хороший ответ. – dowhilefor

ответ

1

Атрибуты не приводят к выполнению какого-либо кода - вам придется использовать отражение для доступа к ним. Если вы хотите, вы могли бы реализовать базовый класс, который имеет такое поведение, и добавить код отражения конструктору:

abstract class AutoCreateBase 
{ 
    public MyBase() 
    { 
     // Reflection to go through the fields, find the attributes, and use Activator.CreateInstance() on each 
    } 
} 

class MyClass : AutoCreateBase 
{ 
    [AutoCreate] 
    private Banana banana; 
} 
0

Кроме того, некоторый контейнеровоз как единство предлагает эту функциональность

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