Forums Neueste Beiträge
 

Günter Prossliners NDuck / Problem mit aggregierten Interfaces

19/12/2009 - 22:21 von Carsten Posingies | Report spam
Hallo NG,

von allen Ducktypern, die ich bisher so gesehen habe, gefàllt mir Günter
Prossliners NDuck am besten. Das Ding ist klein und schnell.

Es hat aber eine Schwàche. Es schmeißt nàmlich mit Ausnahmen um sich,
wenn das Interface, auf das getypet werden soll, eine Aggregation von
Interfaces ist. Beispiel:

public class TestClass
{
public int TheInt { get; set; }
public bool TheBool { get; set; }
}

mit

public interface ITheInt
{
int TheInt { get; set; }
}

und

public interface ITheBool
{
bool TheBool { get; set; }
}

und (!)

public interface ITheIntAndBool : ITheInt, ITheBool { } // !!

Die TestClass passt natürlich auf ITheIntAndBool, aber wenn ich durch
Günters Code debugge, scheppert es wegen

CodeTypeReference codeTypeReferenceInterface = new
CodeTypeReference(interfaceType);

Der Test schlàgt fehl mit "Compiler Errors: 'TestClass' implementiert
den Schnittstellenmember 'TheInt' nicht. 'TestClass' implementiert den
Schnittstellenmember 'TheBool' nicht."

Mir scheint fast, dass das eigentlich nicht an Günters Code liegt,
sondern am CodeDOM.

Weiß hier jemand was dazu, und wie man das geradebiegen kann?

Danke, und schönen 4. Advent!

Carsten
 

Lesen sie die antworten

#1 Holger Boskugel
21/12/2009 - 15:55 | Warnen spam
Hallo Carste
public class TestClass
{
public int TheInt { get; set; }
public bool TheBool { get; set; }
}

...

public interface ITheIntAndBool : ITheInt, ITheBool { } // !!

Die TestClass passt natürlich auf ITheIntAndBool, aber wenn ich durch
Günters Code debugge, scheppert es wegen

CodeTypeReference codeTypeReferenceInterface = new
CodeTypeReference(interfaceType);

Der Test schlàgt fehl mit "Compiler Errors: 'TestClass' implementiert
den Schnittstellenmember 'TheInt' nicht. 'TestClass' implementiert den
Schnittstellenmember 'TheBool' nicht."

Mir scheint fast, dass das eigentlich nicht an Günters Code liegt,
sondern am CodeDOM.



Also ich würde meinen (ohne Test) dass wohl die Implementierung vo
ITheIntAndBool in TestClass fehlt, etwa so

public class TestClass : ITheIntAndBool
//..


Grus

Holge

http://www.vbwebprofi.de

Ähnliche fragen