


# ServiceData&lt;T> class









<p>Exposes the ability to get a hold of the service runtime name and bindings.</p>




## Constructors

[ServiceData](../package-fidl_fidl/ServiceData/ServiceData.md) ()

   


## Properties

##### [hashCode](../package-fidl_fidl/ServiceData/hashCode.md) &#8594; int



The hash code for this object.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_



##### [runtimeType](../package-fidl_fidl/ServiceData/runtimeType.md) &#8594; Type



A representation of the runtime type of the object.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_





## Methods

##### [getBinding](../package-fidl_fidl/ServiceData/getBinding.md)() [AsyncBinding](../package-fidl_fidl/AsyncBinding-class.md)



Returns the generated runtime service bindings.  




##### [getName](../package-fidl_fidl/ServiceData/getName.md)() String



Returns the generated runtime service name.  




##### [noSuchMethod](../package-fidl_fidl/ServiceData/noSuchMethod.md)(Invocation invocation) dynamic



Invoked when a non-existent method or property is accessed.  
_<span class="feature">inherited</span>_



##### [toString](../package-fidl_fidl/ServiceData/toString.md)() String



A string representation of this object.  
_<span class="feature">inherited</span>_





## Operators

##### [operator ==](../package-fidl_fidl/ServiceData/operator_equals.md)(Object other) bool



The equality operator.  
_<span class="feature">inherited</span>_















