interop.net.event | index e:\vslrft\dlr\languages\ironpython\tests\interop\net\event\__init__.py |
Delegate
* How the delegate is defined?
- Different signatures (return type, argument list, params,
params dictionary, ref/out args)
- Generic delegate type
* Instantiation
- With static/Instance (variable or literal) CLR method on value type/reference
type,
* When Type.Method has overloads
* No match or more than one matching method found.
* Type|Instance (dot) StaticMethod|InstanceMethod
- Another delegate
* Type compatible, or not
* Pri 2: it might be interesting to support some "light-weight coercion" here
where compatible delegates cast w/o new code gen. It's a feature, but just
adding some minimal tests of coercible delegates would be interesting. For
example a delegate object foo(subclass a) could have a otherclass bar(baseclass a)
cast to it - such conversions should be implicit.
- Others:
* a type, indexer, field, operator, property, NULL
* interface.Method, ...?
* Language function/methods
- Possible need for type conversion
* Static type should not be in the signature
- C# reference: http://msdn2.microsoft.com/en-us/library/aa691347(VS.71).aspx
* Operations on delegate
- +, +=, -, -=
* Add the same method multiple times
* Removing once - the last occurrence is the one actually removed
* Removing the same method multiple times
* Impossible removal is benign
* Becomes empty invocation list after removing.
- invocation
* call expression, __call__, "Invoke"
- other wild operations
Event
* Where it is defined
- Interface
* How it is defined
- Add only, remove only, different accessibility / modifiers
- Static or instance
- Explicit event from interface
* Operations on Type|object (dot) (Static|Intance) Event
- +=, -=, =, Add/Remove (?)
* The choices of the right side:
* delegate, method, others
* compatible, not compatible
* (python) __add__, __iadd__, __sub__, __isub__ direct calls
- call operator, explicit "invoke"?
- Other operations:
* Use it as the right-hand operand somewhere else?
Package Contents | ||||||
|