русский
Germany.ruForen → Архив Досок→ Programmierung

Visual Studio 15 SP 1

15.06.16 13:23
Re: Visual Studio 15 SP 1
 
Murr патриот
Murr
in Antwort Murr 13.06.16 11:07

Нашел еще одну веселую штучку. (пишу руками - могут быть ошибки)


interface IFilename

{

String RootPath { get; set; }

String Basename { get; set; }

}


public abstract partial class TBase : IFilename

{

public void Generate()

{

String filename = TFileManager.BuildFilename(this);

....

}


....

String IFilename.RootPath { get; set; }

String IFilename.Basename { get; set; }

}


class MyTemplate : TBase, IFilename

{

public MyTemplate()

{

RootPath = @"c:\_Generated";

Basename = @"MyDoc.dat";

}


String RootPath { get; set; }

String Basename { get; set; }

}


public static class TFileManager

{

public static String BuildFilename(IFilename pFilename)

{

....

}

}


Как помнится, утверждалось, что при наличии двух определений интерфейсов в конечную реализацию входит последняя.


В данном случае последняя реализация находится в классе MyTemplate - там где происходит декларирование полей и присвоение значений.


Однако при кастинге в передаче параметра - в TFileManager.BuildFilename(this); - эта имплементация не используется, а получается первичная из TBase. А там, естественно, все нулл-нулл.


То, что поправить не сложно - понятно, но все же Я получил доступ к не последней реализации интерфейса... смущ

 

Sprung zu