Solidity
如何檢查智能合約是否支持介面?
我有實現
IERC2981
介面的令牌合約,並且我已經supportsInterface
像這樣覆蓋了函式。function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, IERC165) returns (bool) { return (interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId)); }
我將如何檢查或呼叫
supportsInterface
另一個合約中的函式?假設從我的銷售契約中我想檢查令牌契約是否支持IERC2981
如果它確實呼叫了該royaltyInfo
函式。
如果您有
address
目標契約的 並且想要強制執行IERC2981
受支持,您將執行以下操作:require( IEIP165(target).supportsInterface(type(IERC2981).interfaceId), "Contract does not support IERC2981" interface. );
該
IEIP165
介面可以在OpenZepplin 合約中找到。