Вы не можете сделать это с помощью ссылки на родительский объект до тех пор, пока не будет объявлен метод except в самом родительском классе / интерфейсе.
Вы должны сбрасывать его на дочерний класс, поскольку родительский класс / интерфейс не имеет любое знание о дочернем классе, отличном от контракта, определенного между ними.
Здесь contract
означает abstract methods
.
вы можете попробовать таким образом, нужно проверить его.
FooInterface sc =new Child1();
sc.foo();
...
interface FooInterface{
void foo();
}
public class Parent {
}
public class Child1 extends Parent implements FooInterface{
public void foo() {
}
}
public class Child2 extends Parent implements FooInterface{
public void foo() {
}
}
Вы можете изменить контекст сборки Docker на родительский каталог.
Измените ваш dockerfile на это:
FROM microsoft/dotnet:2.1-sdk
WORKDIR /app
# copy fsproj and restore as distinct layers
COPY App/*.fsproj ./
RUN dotnet restore
# copy and build everything else
COPY App/. ./
RUN dotnet publish -c Release -o out
И затем запустите (из папки, содержащей Add и Library)
docker build -f App/Dockerfile .
Но да, обычно ваш файл docker обычно более распространен находится там, где вы хотите, чтобы ваш контекст сборки был. Так что там, где есть все файлы, которые вам понадобятся.
В docker для Mac / Windows демон docker будет копировать каждый файл из контекста сборки в виртуальную машину. Так что здесь есть хит производительности. Что-то, чтобы рассмотреть, когда вы структурируете свои проекты.