Использование атрибута для создания экземпляра класса - PullRequest
1 голос
/ 12 июля 2011

У меня есть 2 поля, например

private IFruit fruit;
private Banana banana;

Экземпляр Banana создается следующим образом:

var banana = new Banana(fruit);

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

Ответы [ 2 ]

1 голос
/ 12 июля 2011

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

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 голосов
/ 13 июля 2011

Также некоторые контейнеры, такие как Unity, предлагают эту функциональность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...