2016-06-09 59 views
1

說我有以下注釋和2類:可反射:myAnnotation.annotatedClasses不同結果CmdApp <>客戶端

class AppModel extends Reflectable { 
    final String name; 
    const AppModel([this.name]) 
     : super(newInstanceCapability, metadataCapability); 
} 

const appModel = const AppModel(); 

@appModel 
class ImGonnaBePickedUp { 

} 

@AppModel(' :(') 
class AndImNotPickedUpOnServer_IDoOnWebClient { 

} 

main() { 
    appModel.annotatedClasses // that's what I mean by "Picked Up". 
} 

在CmdApp側(服務器):僅在AndImNotPickedUpOnServer_IDoOnWebClientappModel.annotatedClasses中給出。

在網絡端,給出了兩個類。

長話短說,我如何檢索帶有const constructor直接const constructor調用的類,如上面的示例@AppModel(' :(')(對於CmdApp和Web)?

回答

2

因爲版本0.5.4可反射類不支持參數

構造這似乎在reflectable documentation

腳註:1。目前,這是唯一支持的設置是在元數據對象是類的直接子類的實例[Reflectable],比如MyReflectable,該子類定義了一個採用零參數的const構造函數。這確保Reflectable的每個用作元數據的子類都是單例類,這意味着可以通過在類中生成代碼來表示實例的行爲。如果引人注目的用例出現,將來可能會支持此設置的概括。

一個可能的解決辦法是使用第二批註處理的名稱,例如:

import 'package:reflectable/reflectable.dart'; 
import 'package:drails_commons/drails_commons.dart'; 

class AppModel extends Reflectable { 
    const AppModel() 
     : super(newInstanceCapability, metadataCapability); 
} 

const appModel = const AppModel(); 

class TableName { 

    final String name; 

    const TableName(this.name); 

} 

@appModel 
class ImGonnaBePickedUp { 

} 

@appModel 
@TableName(' :(') 
class AndImNotPickedUpOnServer_WorksOnWebClient { 

} 

main() { 
    print(appModel.annotatedClasses); // that's what I mean by "Picked Up". 

    print(new GetValueOfAnnotation<TableName>() 
     .fromDeclaration(appModel.reflectType(AndImNotPickedUpOnServer_WorksOnWebClient)).name); 
} 

注:我還使用drails_common package

相關問題