Can I create anonymous implementations of an interface , in a way similar to the way
delegate() { // type impl here , but not implementing any interface}
Something on the lines of
new IInterface() { // interface methods impl here }
The situations where I see them to be useful are for specifying method parameters which are interface types, and where creating a class type is too much code.
For example , consider like this :
public void RunTest()
{
Cleanup(delegate() { return "hello from anonymous type"; });
}
private void Cleanup(GetString obj)
{
Console.WriteLine("str from delegate " + obj());
}
delegate string GetString();
how would this be achieved if in the above code , the method Cleanup had an interface as a parameter , without writing a class definition ?
( I think Java allows expressions like new Interface() … )
There is no standard language syntax for that. To create an implementation of
IInterfaceon the fly you could use Reflection.Emit and maybe something involving generics and/orAction<...>/Func<...>(with or withoutExpression), but it is a non-trivial amount of work.Essentially, this is what many of the mocking frameworks do. Look to them, perhaps.