2011-07-12 114 views
1

的實例,我有2個領域,如使用屬性來創建

private IFruit fruit; 
private Banana banana; 

Banana一個實例被創建這樣的:

var banana = new Banana(fruit); 

我想創建一個屬性Banana領域做爲我創建Banana實例的工作!

+1

谷歌的依賴注入。它做你正在尋找的東西。 – leppie

+1

不是很清楚你想要什麼,對不起。請問,請問你有問題嗎? – Tigran

+0

您還可以查看[工廠](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

還有些容器像統一提供此功能