2012-07-26 57 views
1

我有一個包含該屬性的用戶控件:IListSource類型的AttributeProvider是做什麼的?

[AttributeProvider(typeof(IListSource))] 
public object DataSource 
{ 
    get { return _grid.DataSource; } 
    set { _grid.DataSource = value; } 
} 

這將如何影響屬性的財產?(除了設計師的漂亮組合框)。
它迫使屬性只接收實現IListSource或IEnumerable的值嗎?
你能找到我BCL的代碼片段解釋屬性效應嗎?


來源:
AttributeProviderAttribute Class
IListSource Interface
How to: Apply Attributes in Windows Forms Controls

+0

http://msdn.microsoft.com/en-us/library/system.componentmodel.attributeproviderattribute.aspx – 2012-07-26 14:33:34

+0

謝謝@AmiramKorach,但不幸的是不是這個,也不[這](http://msdn.microsoft。 com/en-us/library/yf2z7b6t%28v = vs.100%29.aspx)或[this](http://msdn.microsoft.com/en-us/library/ms171726.aspx)對我來說足夠清晰。 – HuBeZa 2012-07-26 14:36:10

回答

0

這個屬性,因爲任何屬性,不具備對屬性本身沒有任何影響。它僅被其他組件用於獲取有關該屬性的元數據。文檔所說的是某些組件,如數據綁定,需要知道屬性的類型。通常這些數據是從屬性屬性和屬性類型屬性中收集的,但在這裏是不可能的,因爲DataSource屬性有一些選項可以爲它設置,而這些類型除了從對象繼承以外沒有任何共同之處,所以這個屬性告訴任何需要知道該類型應該是IListSource的人。 我希望這更清楚。

+0

說這個類型應該實現IListSource並不完全準確。首先,如果是這樣簡單的話,您可以將屬性的類型從'object'更改爲'IListSource'。其次,根據[DataGrid.DataSource Property文檔](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.datasource.aspx),它使用完全相同的屬性,您可以將其設置爲實現「IList」或「IListSource」的任何類型。 – HuBeZa 2012-07-26 14:56:49