►
From YouTube: .NET Core Design Reviews: ADO.NET
Description
In this review, we’ll take a look at the revised proposal to get schema information:
https://github.com/dotnet/corefx/issues/5915
To address #3423: A replacement API for DataReader.GetSchemaTable().
D
A
C
A
So,
based
on
a
bunch
of
feedback,
you
updated
this
report.
We
want
to
walk
us
through
like
what
the
major
changes
were.
Yeah.
D
So
Oh,
essentially
via
we
had
ironed
out
a
lot
of
things
on,
and
there
were
suggestions
that
go
and
figure
out
the
names
and
how
the
port
will
look
from
a
dotnet
go
to
be
next
and
how
intro
interrupt
will
work
so
I
just
walk
through
the
code
snippets
and
explain
what
they
are
all
about.
So
the
first
data
structure
is
the
DD
column
which
we
had
spect
out,
an
issue
3
for
23
and
it's
a
bunch
of
gators
and
setters
and
the
there's
a
indexer
as
well
on
this.
So
there
we
are.
These.
D
These
properties
are
present
in
the
data
structure,
are
some
of
the
common
properties
that
we
see
in
the
DB
columns
for
all
the
databases
and
hence
for
all
the
providers.
And
let's
say:
if
sequel
wants
to
provide
something
extra
and
wants
to
expose
it
to
the
lower
level
libraries
which
do
not
come
about
sequel,
then
they
can
expose
it
using
the
Gator.
If
you
can,
you
stroll
up
a
bit
I
want.
B
D
See
the
score
data
structure,
yeah
yeah,
so
that's
the
accessor
for
the
indexer
which,
through
which
we
can
access
the
extra
properties
which
may
for
some
reason
we
needed
by
the
lower
levels.
But
this
is
a
set
of
common
properties
that
we
had
decided
upon
with
the
community
on
3403.
And
what
is
the
type.
D
Yes,
so
I
mean
it
depends
our
database,
but
this
is
not
really
the
data.
This
is
the
metadata
for
theta.
So
let's
say
that
sequel
has
one
more
tyranny:
one
more
property
to
describe
its
column.
Saying,
let's
say,
is
oh
girl
on
this,
but
let's
say
if
it
has
another
property
which
is
a
pool,
and
then
it
has
another
property
which
is
probably
a
string
and
then
another
in
which
are
specific
to
sequel
database.
So
it
can
expose
those
using
the
index
so
that
we
have
and
so
can,
post
array
or
my
sequel.
So.
E
I
understand
that
its
metadata,
but
when,
when
it's
stored
in
the
database
yeah,
the
data
would
be
some
primary
yeah
for
more.
It
would
be
all
strings
because
I
wonder
whether
so
would
not
make
sense
to
just
return
the
string
here
and
if
it's
a
name
it's
you
know
it's
a
string
representation
of
an
intended
crypto
parts
or
it
really
does
make
sense
to
expose
it
as
an
object.
So.
D
D
A
A
D
Of
two
things:
they're
settable,
because
this
data
structure
can
be
used,
as
is
by
a
provider,
to
pass
around
its
data.
So
it
may
not.
Sequel
may
not
create
security,
be
column,
it
can
use
a
DB
baller
and
but
in
case
it
wants
to
add
most
from
strong
types
to
it.
They
can
they
can
derive
from
class,
but.
A
F
Basically,
my
questions
recently
right.
The
question
is
why
I
could
be.
We
need
to
have
that
object
please.
So
because,
at
the
end
of
the
day
you
will
you
will
offer
I
mean
we
will
I
mean
you
create
your
implementers
if
the
Fred,
like
sequel,
DP
colors
and
has
their
own
properties
right,
so
I
thought
instead
of
having
weekly
tab,
we
just
support
the
strongly
pad,
but
at
the
end
of
the
day,
they
didn't
need
to
check
whether
whether
the
DP
column
is
a
type
of
sequel
to
be
column
and
use.
D
A
A
You
know
property
called
foo
like
how
would
I
discover
that
I
mean
like
I
mean
I
would
say
if
you,
if
you
give
people
basically
key
based
access
mechanism,
I
think
you
want
to
expose
the
key
somehow
as
well
yeah,
so
otherwise,
maybe
whether
to
just
remove
the
mix
it
all
together
and
say.
Well,
you
have
to
know
that
it
is
a
sequel
to
be
cut
them
cost
of
that
type.
And
then
what?
Obviously
you
know
all
the
properties.
F
D
E
E
D
D
E
Available
from
the
provider,
so
you
know
like
I,
don't
have
a
strong
opinion,
but
if
you
want
to
let
people
differentiate
between
those
two,
the
two
cases
you
may
want
to
do
it?
Okay,
but
maybe
it's
okay
and
you
know
in
the
future.
If
you
discover
a
case
where
you
need
to
distinguish,
then
you
had
additional
property
code
is
available
or
something
like
this.
So
another
thing
we
discussed
this,
you
know
receptors
being
protected
and
so
on
and
so
on,
but
I
just
noticed
those
a
virtual
methods.
E
A
Either
settle
on,
you
have
setters,
which
gives
it
just
feels
essentially,
and
that
case
I
wouldn't
make
them
on
virtual,
because
it
makes
sense
to
have
the
virtual
or
you
have
no
status
in
the
magnet
virtual
I
wouldn't
do
both
I
would
make
a
decision
over
the
other
I
personally
would
lean
towards
virtual
with
getters.
Only
because
I
think
the
pattern
that
you
want
to
basically
enforce
is
that
it
has
a
value.
The
bed.
You
can
really
never
change
so.
D
D
E
Yeah,
so
if
they
are
not
the
rich
world,
honestly
I
understand
that
you
would
like
people
to
be
able
to
use
it
without
inheriting
yeah
but
I.
I
think
this
enormous
value
in
just
making
SS
protected.
It
makes
it
very
clear
what
the
usage
for
the
majority
of
our
customers.
You
know
it
would
be
clear
that
they
are
not
supposed
to
be
selling
these
values,
and
then
there
are
only
few
people
who
will
be
implementing
custom.
You
know,
database
providers,
so
for
them
to
inherit
is
not
a
big
deal.
Wait.
E
If
you
know
like,
because
if
you
want
it
to
allow
people
not
to
inherit
from
this
type,
you
would
have
to
have
a
constructor
and
then
constructor
would
have
to
have
some.
You
know
take
a
dictionary
that,
specifically
to
a
way
to
set
all
the
these
properties
during
construction,
then
you
don't
have
to
incur
it.
You
just
create
one.
You
pass
all
the
properties
now
you
have
and.
D
E
E
Yes,
so
that
was
that's
actually
touching
on
the
related
question.
If
I
use
the
indexer
and
I
pass
one
of
the
existing
properties,
is
it
going
to
work
or
not?
Yes,
so
all
these
all
properties,
I
can
access
through
the
indexer.
Yes,
you
see,
so
you
could
have
a
constructor.
It
just
takes
a
dictionary.
D
D
The
implementation
is
that
you,
you
switch
on
the
property
news
and
return
the
property
itself,
but
if
you
want
to
have
it
more
specialized
or
have
your
own
storage
or
two
wanna
do
other
things
with
the
indexer,
then
you
initialize
your
own
storage
internally
and
manage
as
you're
ready
have
storage
in
the
face
that
correct.
So
there
is
no
storage
story
in
this
is
only
the
properties
that
are.
There
is
no
extra
dictionary.
D
E
D
For
causing
index
properties
that
if
they
want
to
use
a
dictionary
for
it,
so
let
the
flexibility
on
the
beyond
subclass,
rather
than
us,
taking
the
owners
of
putting
it
in
the
base
class.
So
what
do
you
use
today
for
the
it's,
a
bunch
of
switch
switch
case,
statements
on
the
existing
properties
and
that's
what
DB
column
the
base
class
needs
to
expose?
Oh
because.
C
A
Is
like
how
we
saw
senses
it
is
this
area
and
I
mean
if
you
again,
I
got
the
impression
last
I'm
like
if
you
do
this
a
lot
to
a
query
execution,
and
ideally
you
care
that
DB
colors
are
not
super
expensive,
I
yeah,
everybody
else
who
hold
on
to
a
dictionary
that
has
yet,
if
the
single
value
boxed
or
something
right,
but
at
the
same
time
I
mean
it's.
The
trailer
between
flexibility
and
ease
of
use,
like
personally
I,
think
super
standpoint.
The
same
of
you
know,
connection
string
builder
way.
A
Essentially
everybody
just
deals
with
the
stolen
type
properties,
but
charlie,
I
think,
is
essentially
dictionary
of
key
value,
pairs,
Oh
type,
the
string,
I.
Think,
and
then
you
know
at
the
end
you
just
close
to
straight
line,
but
I
mean
I.
Think
this
one
is
very
similar
like
it
feels
very
much
like.
Okay,
there
is
a
you
know,
the
majority
of
things
that
I
care
about
our
typed
and
for
their
manners.
A
I
have
an
escape
hatch,
but
then
to
me
would
just
mean
that
the
behavior
is
such
that
it
behaves
like
a
dictionary
for
the
you
know.
The
extra
bait
is
and
for
the
remainders
it
behaves
like
a
strongly
typed
data
structure,
in
which
case
I
would
probably
go
down.
The
path
of
saying
you
know,
make
all
the
fields
so
I
make
all
the
properties
protect
its
edible,
remove
virtual
and
enforce
that
base
types
have
to
derive
and
then
deal
with
that,
because
that
this
way
I
mean
everything
is
a
strongly
typed
feeling
on
the
objects.
A
The
override
of
this
thing
is
as
small
as
it
possibly
can
be.
I
mean
you
can
potentially
have
a
smarter
data
structure.
If
you
make
everything
virtual
by
saying,
oh
I
know
the
majority
of
fields
are
zero
or
you
know
smalls
or
whatever,
and
then
I
only
have
to
allocate
fields
for
the
five
things
I
care,
but
then
they
can
be
virtual.
A
A
Only
other
thing
I
will
consider
is
that
CD
color
in
fluent
I
dictionary
of
string,
comma
object
and
it
becomes
a
dictionary
in
itself
or
you
delete
your
face.
Well,
you
can
still
them
in
at
the
same
way
you
do
today,
but
you
basically
get
the
semantics
that
you
would
expect
from
a
dictionary,
which
means
I
will
probably
implement
a
good
shell
on
the
method
explicitly
but
would
leave
the
indexer.
You
know
count
the
keys
try
get
and
then
you
can
pretty
much
address
all
the
issues
we
just
talked
about.
So.
D
Sad
if,
if
I
implement
from
my
dictionary,
the
only
method,
I
foresee
being
used
as
the
indexing
or
the
Gator
or
Gator
on
the
index,
because
all
the
try
get
by
them
index
I
mean
at
this
one.
You.
E
You,
if
you
don't
want
for
you,
just
try
it
try
again
I
just
so.
The
only
is
some
one
concern
I
would
have.
Is
that
now
implementing
a
custom,
one
would
be
a
bit
more
tricky.
While
you
have
to
make
sure
that,
for
example,
the
count
is
always
consistent,
but
now
you
have
the
dictionary
implemented
by
the
base
type
that
doesn't
know
about
the
storage
in
the
subtype.
So
somehow
you
have
to
communicate
to
the
basic
implementation
of
dictionary
that
there's
additional
storage.
E
A
A
E
What
do
you
mean?
You
always
get
30
M
elements?
You
can
never
add
additional
storage
to
their
subtype.
Yes,
they
can
be
not
a
dictionary.
They
can
be
just
to
two
additional
fields.
Now
you
have
to
communicate
it
to
the
base
type
implementation
that
you
have
more,
but
one
is
in
the
derived
type.
Let's
say
the
raft
of
eggs
as
three
properties.
A
E
Know
how
many
it
has
it
calls
the
virtual
that
gives
you
the
keys.
What
about
the
enumerator?
How
would
the
enemy
rated
now
walk
the
additional
fields
as
well,
in
addition
to
the
ones
in
the
base
type
I
think
we
is
it
be
almost
every
single
method
on
the
dictionary
in
the
dictionary
implementation
somehow
would
have
a
they
would
have
to
be
a
hook
such
that
the
subtype
can
communicate,
that
it
has
more
slowly.
A
E
E
D
I
mean
of
Y,
so
the
reason,
one
of
the
reasons
for
this
and
Exodus
that
in
case
of
an
attribute
from
a
subclass,
needs
to
be
kind
of
needs
to
be
consumed
by
the
base
class,
and
those
cases
will
be
very
specific
that
it's
not
that
you're
going
to
be
going
over
all
the
attributes
and
getting
them
and
doing
something
you
got
to
know
what
they
are.
So
essentially,
the
consumer
will
need
to
be
aware
of
what
it
wants
to
consume.
D
A
Sounds
to
me
like,
then,
you
shouldn't
have
an
index
a
period.
That's
that's
what
it
sounds
like
because
I
mean
if
you're
saying
you
have
to
know
the
time,
then
I
will
say:
don't
have
an
indexer,
basically
just
say
it's
a
strongly
type
thing
period,
if
there's
extra
properties
there
on
the
derived
type
and
if
you
want
to
process
them
after
not
the
derives,
have
gift
to
North
properties.
A
So,
let's,
if
I
better,
to
have
I,
think
if
you
have
then
dynamic
approach
to
get
the
values,
I
would
rather
say
it
behaves
and
smells
and
behaves
like
an
index,
and
then
you
can
also
get
if
you
implement
the
x-ray.
In
our
dictionary
you
get
other
niceties
in
the
IDE,
but
for
example,
if
you
actually
hold
on
to
a
DB
column
in
the
debugger
and
you
and
you
expand
it
well,
the
debugger
knows
it
is
phase
as
it
is
in
its
dictionary,
you
get
the
default.
A
Behavior
of
you
see
the
key
to
the
values,
like
all
the
things
just
really
start
working,
and
you
basically
get
the
benefit
that
everything
shows
up.
Not
just
the
property
is
right,
but
I
would
also
agree
with
you
that
it
seems
pretty
heavy
weighting
bit
over
engineered
for
this
project.
Lenses,
which
case
I,
would
honestly
just
ate
rippled
index
at
entirely
well
removal
of
a
mixer
again
again.
What's
the
scenario
for
it
like.
E
A
D
A
At
younger
I
agree
that
all
about
saying
is
that
if
you
look
at
if
the
provider
model
that's
the
model
you
have,
but
you
can
choose
to
just
code
against
the
comment
surface
area,
but
you
can
always
drop
down
to
the
dr
types.
If
you
need
to
right,
there
will
be
the
same
pattern
here.
Like
you
most
of
the
things
you
expose
on
the
base
you
in
a
special
case,
sequel
or
you
just
say
it
become
as
secretly
big
hug
cause
awesome,
then
any
excess.
The
extra
feel
it
to
something.
D
F
D
So
otherwise
you
see
the
whole
work
we
did
on
this
library
and
creator.
Sorry,
this
API,
the
first
approach
that
have
a
schema
generator
I,
don't
know
if
you
remember
so
that
could
have
been
possible,
but
the
first
blocker
here
is
that
the
consumers
don't
need
to
know
about
the
producers,
but
I
think
what
you
know
is
saying.
E
E
Said
that
I
my
care
level
about
whether
we
expose
this
property
or
not
this
low,
but
what
I
think
we
I
would
recommend
this.
Let's
say:
let's
say
you
leave
the
property
and
in
the
future
you
discover
that
your
customers
want.
You
know
the
number
of
items
in
the
dictionary
and
they
need
to
enumerate
keys
and
whatnot
at
that
point,
I
think
you
should
just
at
least
follow
the
same
API
designers
dictionary.
E
E
I
say
exactly:
let's
say
you
should
this
type
and
then
customers
say:
oh
you
know
we
would
like
to
know.
The
number
of
items
see
that
in
the
is
the
dictionary,
correct,
yeah,
don't
add
the
property
called
number
of
items
in
you
know
the
number
of
properties
as
I
I
say,
apoyo
sound
and
then,
if
you
discover
that
you
keep
adding
lots
of
members
that
look
like
dictionary-
and
this
starts
being
like
a
dictionary
just
implement
this
side,
the
chiller
so
I.
A
C
A
D
So
far,
this
is
the
interface
that
I
want
to
introduce.
It
is
called
IDP,
Colin
schema,
generator
and
I
want
to
keep
the
name
of
tied
to
the
column
instead
of
the
reader,
because
it's
really
getting
the
schema
from
the
column
and
I
believe
that
this
may
be
more
reusable
and
tying
it
to
reader,
and
the
method
inside
this
is
called
get
schema
column,
so
I
get
column
schema
which
are
done.
D
D
D
B
D
E
Is
not
implemented
so
is
we
discussed
it
last
time
that
these
changes
you
can
make
them
in
the
third
quarter
correct
like
you
can
implement
the
interface?
Yes,
but
nothing
that
net
framework?
Initially,
yes,
so
the
contract
the.net
call
contract
for
this
ap
is
will
not
have
the
interface
implemented
on
the
idea.
Reader
/
not.
D
F
A
Think
what
we
said
last
time
posted
this
type
here
dvd-r
we
do
extensions,
are
there's
two
limitations:
the
limitation
that
you're
strong
here
is
accentuated
on
a
core
based
implementation
for
the
full
framework
version
of
this
type.
It
will
do
the
same
check
that
you
have
here,
but
then
the
very
next,
instead
of
throwing
not
implemented
exception,
you
would
go
back
to
the
old
schema
api's
and
the
depth
down.
So
today,
blind
provide
this
time
out
of
that.
So,
if
you're
running
into
containers,
you.
D
A
Well,
the
way
I
think
about
this
is
a
maybe
I
would
yeah
I
come
on
the
truck
facade
for
now,
I
got
what
I
would
just
say.
There's
two
assemblies,
yes,
one
over
basically
have
the
same
surface
area.
What
implementation
is
for
full
framework
which
behaves
in
the
way
I
just
described.
The
other
one
is
what
club
is
implementation,
which
looks
exactly
like
that?
Yes,
so
it
means
on
the
full
fabric.
Implementation
yeah
see
you.
A
Literally,
doesn't
have
at
the
interface
but
Lee
with
every
day
extension
still
works
because
it
folds
back
to
the
old
schema
APR
engines.
Now,
if
you
look
at
the
entire
surface
area
of
target
of
a
euro
debt
between
Aaron
Berger
nightcore,
it's
more
consistent.
If
we
don't
have
to
expose
the
fact
that
sequel
datareader
encore
implements
the
interface,
because
otherwise
we
have
to
reduce
your
new
contract.
So.
E
How
will
see
well
I
think
we
we
talked
so
I
just
wanted
to
make
sure.
I
think
this
design
is
right,
but
I
think
we
need
to
discuss
the
details
of
how
they
implement
it.
I
thought
we
agreed
that
we
will
ship
two
different
contracts,
we're
gonna
ship,
a
contract
in
the
existing
generation.
That
does
not
implement
the
interface
and
then
we
cannot
ship
at
contracts.
That
is
a
new
generation
that
does
implement
the
interface.
E
A
D
Bottom
for
Phoenix,
the
partner
you're
talking
about
falling
back,
is
something
that
I
envision
would
go
into
the
facade
with
the
partial
facade,
we're
in
the
cause
to
the
extension
method
will
be
caught
and
it
will
be
implemented
on
top
of
da
24
dot
5
and
which
maps
which
falls
back
to
the
default
implementation
that
we
expose
on
the
vessel
and
what
compiles
or
builds
but
got
at
core
is
what
you
saw
above,
which
will
essentially
throw
an
automated
exception.
If
there
is
no
interface
but.
E
E
That
will
not
only
fail
on
that
network
that
will
literally,
like
type
not
found
exception
on
that
this
framework,
which
is
bad.
It's
not
that
the
cast
will
fire
the
type
man
found
you.
You
know
the
loader
will
fail.
So
that's
why
I
thought
we
talked
that
the
contract
will
not
have
this
interface
implemented
on
this
type.
Yeah,
therefore,.
A
Portable
librarians
I
want
to
target
both
so
that
the
changes
are
minimal,
so
anytime
introduce
an
API
that
is
done,
echo
only
that
is
in
the
conduct
of
chapter
for
Fair
Work,
and
s
toy
basically
becomes
harder
like
it's
not
impossible
for
us,
but
it
is,
it
makes
it
makes
it
easier
to
accidentally
dependent
on
echo
only
behavior,
which
it
all
makes
it
very
very
hard
for
them
to
share
any
code
before
farewell.
I
understand.
D
E
Expose
it,
what
I'm
saying
is
sequel
date
are
either.
You
should
not
implement
this
interface
in
the
contract,
because,
basically,
if
you
do
a
task
to
this
interface,
you
can
do
like
a
straight
cast
to
this
interface
ojos.
The
metadata
will
tell
the
compiler
the
cast
is
fine,
because
the
type
implements
this
interface.
You
can
just
cast
your
recommendation.
D
D
D
E
F
B
E
Fix
activity,
computers
and
then
second
related
question.
I
think
you
know
in
the
reader
you
can
have.
If
readers
I
data,
DB
Collins
schema
generator,
blah
blah
blah,
hey
else,
I,
don't
think
you
should
throw
not
implemented
exception.
I!
Think
it's
like
something!
What
the
heck
is
going
on
exception,
because
this
branch
should
never
be
hit,
like
literally,
should
never,
because
this
will
be
executing
only
on
that
that
car
and
it
will
just
succeed,
no.
D
It
can,
it
can
be
here,
let's
say,
I
have
so.
This
is
equal
example
that
we
are
talking
about
a
sequence
DVD
to
provide,
or
no
let's
say,
be
a
post-race
provider
and
they
haven't
implemented
the
interface.
So
I
gotta
tell
the
consumer
that
this
interface
is
not
implemented
by
whatever
provider
you're
trying
to
learn
soon.
I.
E
A
F
E
A
A
This
guy's
support
schema
information
which
are
not
in
the
frame
with
the
answer
is
always
going
to
be
true
and
I
don't
need
core
its
depending
on
what
the
implementation
fit,
and
so
we
should
probably
give
you
that
method
as
well,
but
though
the
nevada
library,
I
get
schema,
something
that
all
or
you
know
it
has
has
column
schema
or
whatever
is
something
like
that?
What
supports
columns?
Oh
hope,
okay,
I
mean
in.
A
D
I
mean
I
see
a
point,
but
if,
if
I
take
it
forward,
for
example,
I
put
this
method
and
now
I
think
that
when
we
take
it
back
to
dot
net
full
framework
and
/
in
the
base
class,
this
particular
method
yep,
then
we
know
that
it
is
available.
Yes
to
the
end,
in
what
do
we
do
with
this
extension
method?
What
is
the
placeholder
for
this
extension
method?
Does
it
also
make
its
way
into
dr.
A
Method,
which
means,
if
we
go
into
replaceable,
focuses
on
the
base
type.
Then
you
apply
the
same
like
worst
case.
Is
the
method
work
for
sure
in
chip
which
are
true?
Well,
I
think
the
problem
is
like,
generally
speaking,
if
you
have,
if
you
not
support
it
means
the
onus
is
on
you,
the
color,
to
know
when
it's
safe
to
call
this
API.
A
How
would
you
know
it's
safe
to
call
without
duplicating
the
logic
of
the
implementation,
and
the
only
answer
to
that
today
would
be,
if
you
provide
you
method
where
you
can
ask
which
is
basically
take
streams,
but
you
can
ask
the
stream
I
you
mean
only
if
so
well,
then
cut
don't
call
the
right
methods
if
you
call
the
right
methods.
While
then
we
throw
not
supported
because
you're
called
ride
on
a
read-only
stream
and
that's
the
same
idea
like
I
mean
the
caller.
A
A
E
A
A
D
D
A
Cocaina
cope
with
you
right
if
you
were
to
implement
it,
say
entity,
framework
or
some
sort
of
orem
that
that's
deals
with
this
high
level
schema
informations
like
you
would
like
what
you
would
what
you
would
end
up.
Writing
is
code
like
well
I
can't
process
pretty
much
anything
I
can
do
something
more
if
you
have
schemer
information.
A
So
how
do
I
avoid
that
Michael
just
blows
up
if
you
happen
to
use
a
dick
or
DB
provider
that
didn't
implement
the
interface,
so
I
want
Michael
to
just
blow
up
or
do
I
want
my
code
to
gracefully
handle
that
well,
Who
am
I
code
to
basically
handle
that.
Do
you
want
to
call
the
method,
then
you
can
just
catch
the
exception
and
all
the
time
or
do
you
just
say
well,
I,
do
the
check
up
front
and
then
I
know
it's
safe
and
then
I've?
A
You
know
flip
some
bit
and
then
some
other
processing
happens
later
and
that's
usually
why
you
want
capability
API.
So
you
can,
you
know,
check
early
if
you
need
to,
and
you
can
avoid
the
exception
all
together
by
not
calling
it
because
by
knowing
certain
things
aren't
supported.
If
you
really
don't
want
it
takes
situation,
people
are
forced
to
call
the
api
to
figure
out
whether
you
support
something
I
mean
for
this
case.
It's
not
too
bad
because
you
don't
have
side
effects,
but
it's
a
pure
thing.
A
D
A
D
B
D
What
what
I
recommend
what
I
have
written
down
here
is
that
we
take
the
same
method,
put
it
on
the
base
class
of
DB
data
reader,
so
that
we
can
have.
We
can
add
this
to
dotnet
code
when
dotnet
core
objects
that
particular
frame
desktop,
which
has
this
interface
method,
this
particular
API
and
in
that
case,
of
the
an
ass
targeting
dotnet
core.
If
it
is
recompiled,
it
will
be
compiled
against
the
base
class,
and
if
it
is
not
recompiled,
then
all
the
calls
will
be
routed
through
the
extension
method.
D
So
if
the
dll
is
just
dropped
onto
the
new
dotnet
core,
then
it
it
was
initially
compiled
against
the
extension
method.
So
it's
still.
The
row
of
the
calls
are
still
routed
through
the
extension
method,
but
the
extension
method
is
then
modified
by
us
to
send
the
calls
to
the
base
class.
Instead
of
to
this
interface,
the
base
class
checks
that,
if
it
is
already
an
interface
implementation,
then
I
call
the
implementer
face
method,
otherwise
I
otherwise
a
call,
but
anyhow
go
to
the
subclass
implementation.
D
Should
be
the
same
yeah,
the
reason
I
want
to
modify
them
is
because
I
want
to
put
the
source
of
truth
in
the
base
class.
Instead
of
keeping
them
keeping
the
same
logic
and
the
extension
we
can
leave
them
the
same
and
they
they
may
continue.
Actually,
no,
if
a
new
pipe
implements
I
mean
there's
not.
A
Much
logic
in
there,
but
all
the
other
implementations
to
the
AMIA
under
or
against
a
member.
There
is
logic
run.
If
I
make
you
translate
the
old
move
that
to
the
baseline
yeah,
yes,
so
by
what
I
would
still
do
is
even
on
full
firmer.
Today,
like
the
first
line,
the
code
should
be.
Does
the
read
implement
this
interface,
if
so
dispatch
to
that
method?
A
If
you're
not
translate
so
in
a
sense
in
in
the
modified
version,
I
would
just
do
the
hard
costs
and
dispatch
or
just
directly
call
the
method
that
either
way
like
you
end
up
with
excluding
the
same
code.
So
yes
yeah
the
way
you
would
do
this
and
yeah
and
we
do
what
you
would
do
for
family
will
just
say:
reader
and
reader
door
get
color
schema.
D
A
If
we
move
it
to
the
face
right
there
at
that
point,
there
is
no
DVD
that
doesn't
support
it,
in
which
case
I
would
not
add
the
method
itself
to
the
to
the.
I
would
not
move
the
method,
every
never
leave
the
method
and
extension
method.
Yes,
just
to
implementation
to
say
return
true,
because
by
the
time
he
added
like
features
like
this
kimura
thing
is
no
longer
an
optional
saying,
they're
equipped
slider
has
to
implement.
A
We
always
would
support
a
ski
mask
and
the
schema-
maybe
you
know
simpler
unless
they
provided
us
an
extra
where
you
can
always
provide
one
okay.
D
A
D
F
F
A
E
A
D
We
can
put
the
people
the
other,
get
schema
table.
Mapping
to
this
data
structure
there
as
the
base
implementation.
Basically,
what
is
going
to
go
into
the
into
the
extension
method
for
dotnet
framework
is
what
can
go
there
in
the
base
implementation
so
that
there
is
no
gap,
and
so
three
things
do
you
and
do
you
implement
the
interface?
But
the
first
thing
we'll
check
yes,
I
do
so
I
will
just
return
whatever
they
interface.
Implementation
is
so
no
I
don't
implement
it,
and
so
I
return.
D
A
A
The
way
I
wanna
know
I'm,
saying
that
the
default
implementation
would
would
would
use
the
interface
as
a
implementation
unless
you
override
it
so
basically
means
moving
forward.
You
either
override
the
virtual
or
you
implement
the
interface.
Yes,
however,
that
still
breaks
consumers
that
assumed
that
the
way
to
get
the
schema
information
is
through
the
interference
only
because
it
means
now,
if
I
have
a
provider
that
overrides
the
method,
they
also
have
complement
the
interface.
Otherwise
other
components
in
the
system
will
not
work.
A
A
Toric,
it's
amazing.
What
would
have
to
say
is
that
the
only
way
to
get
schema
information
is
you
should
never
use
the
interface.
Every
interface
is
purely
and
communication
mechanism
between
the
extensions
and
the
providers
and
in
the
next
version
that
communication
mechanism
just
uses
the
virtual
method
on
the
base.
Consumers
should
always
call
the
extension,
so
the
extension
can
basically
say
yep
and
we
want
to
use
the
interfacing
to
be
to
a
just
called
base.
How.
E
If
the
base
type
in
the
future
we're
talking
about
the
future,
you
have
evan's
interface
today
directly
it
implements
and
it
has
spiritual
death
of
the
thursday
implementation
of
the
interface.
So
I
don't
see,
we
have
an
issue
you
can.
You
can
cast
to
the
interface.
Yes,
you
cannot
contain
the
virtual
implementation
that
the
base
type,
what
I'm
saying
like
the
Western
Canada
from
can.
A
Not
because
the
problem
is
was
the
default
implementation
of
the
add
the
virtual.
In
order
like
the
problem
that
you
have
is
in
vichu,
you
have
providers
then
implemented.
If
you
want.
Yes,
one
of
those
to
work
like
you
want
a
consistent
all
right,
so
that
means
you're,
adding
the
virtual.
So
what's
my
default
implementation
partial
my
evil
implementation
is
going
to
be
I
I
cast
myself
to
the
interface.
If
the
cast
succeeds
or
I
call
that
method.
E
I'm
pretty
sure
that
I
check
and
I
had
discussions.
What
actually
happens
is
the
the
implementation
of
the
interface
in
the
subtype
that
was
done
a
long
time
ago
becomes
another
right
of
the
virtual
method
of
the
way.
Sir
I'm.
Not
we
should.
We
should
verify
that,
but
I
think
that's.
What's
have
what
is
happening.
A
Well,
no,
they!
The
problem,
is
you
have
two
things
here
right?
You
have
the
interface
method
and
you
have
the
version,
but
they
have
to
have
the
same
signature.
They
have
the
same.
Nobody
went
into
an
interface,
you
specify
how
you
want
to
let
them
you
can
either
say
I
implemented
the
face
explicity,
which
means
the
detail.
The
stuff
for
the
interface
is
different
from
that
mess.
That
happens
to
have
the
same
signature
for
earth
and
then
his
hobby
basis
tell
people
to
do
right,
all
the
derived
providers.
A
E
B
B
Know
that
we've
promised
in
the
past
not
to
add
we've
made
it
a
compatibility
contract
not
to
add
in
two
places
when
it
changes
the
semantics,
like
people
get
mad
when
the
attic
is
horrible,
because
it's
a
we
consider
like
that.
Because
of
that,
so
they
know
how
to
call
base.
In
this
case,
it's
not
quite
like
the
recommendation
would
not
be
calling
base
because
there
was
there
was
not
so
for
you
would,
but
you
would
never
call
Bates
right.
A
They
sitting,
you
will
always
either
provide
your
own
implementation
or
you
don't
provide
it
for
maybe
is
moving
into
the
resulting
useful
I'm.
Pretty
sure
there
is
disjoint
slots,
I
mean
the.
If
you're
on
the
drive
type
and
to
implement
an
interface,
they
don't
make
it
a
virtual.
It
doesn't
matter.
You
exist
map
that
represents
a
virtual
slot,
but
if
that,
but
it
doesn't
do
by
the
fact
that
the
method
itself
is
virtual,
it
just
is
like
they
just
chair
one
slot,
but
that's
what
the
interface
nap
in
hecka
method
later.
D
D
The
difference
is
that
if
you
are
implementing
the
interface
directly,
then
you
don't
have
the
override
key
word
in
there
right
and
otherwise
you
are
actually
getting
that
API
from
a
virtual
which
you
would
override.
So
if
I
don't
put
the
override
key
word
and
I
put
a
method
and
I
put
another
method
there.
Then
there
was
a
complaint
from
the
compiler
about
hiding
a
method.
Yeah.
D
A
The
behavior
is
the
one
between
producers
and
consumers
in
tonic
1v2
like
I,
don't
think
we
can
have
it
both
ways:
I,
don't
you
say:
providers
can
either
override
the
virtual
or
implement
the
interface
and
that's
transparent
to
consumers,
because
they
would
require
that
somebody
always
implements
the
interface,
regardless
of
all
the
providers
being
implemented.
I'm.
E
A
E
E
A
The
deaths
will
be
saying:
I,
don't
think,
that's
how
it
works.
Whoa.
Let's
say
it
doesn't
work
like
that
and
say
that
the
the
public
interface
implementation
of
the
component
has
does
not
overwrite
the
one
that
we
add
later
on
in
the
base,
which
I,
don't
think
is
what
happens
and
that's
what
the
cure.
C
E
B
E
A
Said
this
is
a
mediator
here.
This
is
the
base,
so
the
problem
is
if
this
guy
doesn't
implement.
It
is
this
guy,
so
this
guy
doesn't
immediately
in
this
case
the
whole
interpretation
of
the
base.
What
it
can
do
is,
it
can
just
say:
well,
if
you
are
a
lead
to
a
v1
provider,
while
then
implement
the
interface,
so
I
can
try
to
cast
the
interface
with
the
cast
succeeds.
A
A
E
E
So,
but
which
one
now
he
chosen,
because
if
it
implements
I'm
saying
if
it's
implemented
at
the
same
time,
yes
well
it
better
do
something
more
than
just
casting
it
to
itself
and
calling
itself
I
mean
that's
a
pretty
stupid
implementation.
We
would
do
a
tri
cars.
Like
you
say,
if
the
cars
you
see,
whether
it's
just
to
try
or
not
it's
a
stupid
implementation,
because
it's
like
I'm
casting
well,
it
will
succeed
and
then
I'm
calling
the
method
recursively,
which
will
create
infinite,
recursion.
Okay,
nobody
would
write
back
so.
A
I'm
saying
an
interface
implementation,
you
can't
do
that.
I'm,
saying
like
the
question
is:
what's
the
behavior
was
the
limitation
of
the
same
so
I'm
saying?
If,
if
you
don't
look
at
the
interface,
then
you
can
do
the
try
cost,
because
that
has
a
chance
of
succeeding.
But
if
you
do
that,
that
means
that
consumers
of
this
tag
now
have
to
have
different
code
based
on
whether
the
provider
provided
the
scheme
of
via
the
interface
all
the
overriding
the
base.
A
You
can't
just
rely
on
either
mechanism
by
either
call
now
this
guy,
which
will
now
work
for
the
two
providers.
Only
all
your
call
so
the
interface,
which
means
it
will
work
for
both
old
and
you've
cooked
providers,
because
this
guy
does
the
right
thing
plated
it
fits
into
this
problem
is
now.
If
we,
if
we
do
implement
the
interface,
then
it
will
be
transparent
for
the
consumer,
because
the
base
we
learn
about
a
parasite.
E
Then
then,
there's
no
way
for
you
to
dispatch
the
director,
I
I,
think
I
understand
that
yeah
when
I
was
talking
about
what
would
work.
It
is
the
matching
between
you
know
the
slots
for
these
methods.
They
would
I
think
we
can
make
them
all
matchup
in
the
future.
I
think
it
will
work.
What
will
not
work
is
how
do
we
implement
this
visual
method
in
indy?
One
ring.
F
This
other
we
gonna
have
to
be
pranay
like
I,
don't
know
so.
The
IDB
schema
has
different
cat
column,
schema
other
things
right
and
then
the
extension
will
be
the
same
name,
that
in
the
in
the
digital
method,
so
exchanger
interface,
virtual
metro
to
swim,
learner,
so
yeah.
So
the
impact,
the
extension
methods
with
the
future
virtual
method
will
be
the
same
name,
but
interface
methods
will
be
different,
different
different
name,
sir.
F
F
Has
to
know
which
names
to
use
no
yeah,
no
conscience.
The
benefit
is.
The
interpersonal
is
only
happens
in
the
core
FX,
but
in
the.net
framework
we
always
use
with
from
methods
and
alyssa.
It
might
be
adding
the
virtual
method
in
a
future
for
FX.
This
would
work
conflict
with
interface,
so
in
the
individual
implementation
it
will
be
just
the
same
like
what
is
your
extension
is.
So
if
the
providers
is
implementing
interface,
they
will
call
the
interface,
but
if
not,
they
will
call
the
off
right.
So
what
about
this?
Instead.
E
A
Can
never
safely
call
this
message
than
ever
because
the
provider
hazards
arising
that's
my
concern,
like
the
whole
point
of
the
feature,
is
to
say:
how
can
we
provide
schema
information
given
them?
You
can
add
virtual
Sudan
and
fabric
today,
and
it
means
at
all
that
doesn't
matter
if
it
can
be
too.
A
We
can
just
do
the
right
thing
with
the
virtual
and
things
will
just
work
if
we
can't
do
that,
I'd
rather
not
do
the
feature
now
postpone
the
feature
to
the
point
where
we
can
add
a
piezo
net
framework
and
then
do
it
the
right
way,
rather
than
to
create
something
that
will
work
for
six
months
and
then
we
add
something
else
that
we
think
is
better,
but
that
never
believe
work
safely,
because
we
now
have
two
features.
You
saying
on
that
that
frame
of
this
method
will
always
work
correct.
Is
that
what
you
saying?
A
Well?
It
has
the
problem
conceptually
on
both
platforms,
because
it's
about
what
did
the
v1
provider
they
could
make
it
with
the
v1
provider.
You
use
to
explore
schemer
information
on
full
frame
rate,
we're
saying
nobody
does
anything
and
we
have
the
old
scheme
information
that
we
can
adapt,
which
is
why
it
works.
F
A
The
extensions
the
problem
is,
like
the
extensions,
are
just
basically
a
way
for
us
to
do
the
casting
interface
and
call
the
method.
The
problem
is
between
the
the
provider
and
the
consuming
code.
That
consumes
schema
information
through
the
base
type,
because
the
bottom
is
so
we
have
to
choose
either
we
are
saying
a
consumer
will
always
will
never
ever
call
the
interface
methods
directly.
A
It
will
always
call
through
the
extension,
in
which
case
we
can
do
the
right
thing
in
the
extension
methods,
in
which
case
it's
all
fine,
because
now
it's
okay,
fine,
we
can,
we
can
adapt
the
right
things.
You
can
do
the
write
checks.
That's
fine!
If
we
say
well,
the
consumer
code
can
always
say
if
the
provider
implements
the
interface.
That's
how
I
get
scheme
information
I
can
just
call
it
to
face
member
yeah.
Now
that
means
in
v2.
A
Want
but,
unfortunately,
cannot
implement
interface
on
the
base,
because
now
we
break
the
light
up
for
the
base
type
to
say.
Well,
if
you
will
be
one
provider,
I
can
just
call
through
the
interface
to
get
schema
information.
So
it's
it's
that
we
can
only
do
one
of
the
two
like
either
we
make
so
that'd
be
one
providers
will
work
with
the
be
two
of
the
virtual
or
we
make
it
so
that
consumers
can
always
cast
to
the
interface
and
call
the
method
and
have
it
work
and
then
cannot.
You
cannot
have
like.
F
A
But
that's
exactly
the
problem
because
now
so
that's
why
I'm
saying
it
depends
on
what
which
contract
you
want
to
have
so
if
the
consume,
so
let's
say
it's
a
bit
too
provider
to
be
two
provider
overrides
the
base.
Yeah
so
can
provide
scheme.
Imagine
it
doesn't
implement
the
interface,
which
is
what
we
want.
You
don't
want
people
to.
You
have
to
worry
about
it
to
face
forever
right.
That
no
means,
if
I
have
a
v1
provider
where
the
virtual
didn't
exist,
they
expected
to
get
scheme
information
to
the
interface.
A
A
F
A
A
D
This
properly
locker,
if
the
v1
of
the
provider,
doesn't
implement
the
interface
or
provide
an
epi
or
override
the
virtual
right,
because
if
the
base
class
is
casting
to
the
interface
and
be
too
if
the
peace
process
costing
to
an
interface
and
checking
of
the
interface
has
been
implemented
and
then
returns
line
interface
implementation.
Where
is
the
break
there.
D
Too,
we
can
have
two
kinds
of
providers,
one
who
have
implemented
the
interface.
Are
you
three
hands
provide
one
were
implemented.
Their
interface
second
will
implement
the
virtual
or
override
the
virtual
and
third
who
have
not
provided
the
schema
at
all
right.
So
in
that
case,
in
the
base
class,
if
each
cost,
through
the
interface
and
return,
the
interface
schema
or
implementation
as
the
first
step
followed
by
a
not
supported
exception,
yes
order,
the
right
exception.
B
D
A
Written
interface,
what
now
happens
is,
if
you
have
a
good
super,
yes,
then
place.
It
says:
I
find
schema
information
because
I'm
in
v1
consumer
right,
my
mother
is
correct.
So
me
one,
you
say:
ok,
if
you
I
know
that
if
you
implement
the
interface
I
can
call
the
pastor
to
get
an
answer.
That
means
that
code
will
not
work
with
a
v2
provider
unless
they
also
implement
the
interface.
Yes,.
D
A
D
I
mean
if
someone
is,
if
Amin,
so
we
so
essentially
we
exposed
to
methods
of
exposing
the
schema.
One
is
why
they
interface
and
one
is
by
the
virtual,
which
doesn't
implement
this
implement
the
interface
or
one
is
by
I
ODB
data,
which
does
not
implement
the
interface
generally
best
like.
If
you
have
two
ways
of
doing
things,
the
one
like
what
you
basically
want
is.
A
You
want
to
say
you
know:
I
want
to
decouple
consumers
and
producers
right,
producers
can
choose
to
use
one
or
the
other
doesn't
matter
in
consumers
can
can
interact
with
those,
regardless
of
all
the
real
tense.
That's
what
you
want
as
soon
as
you
have
a
coupling
where
consumers
and
producers
have
to
change
f2,
we
on
the
way
things
are.
It
causes
versioning
issues,
because
if
you
have
it
be,
one
consumer
will
be
to
provide
all
the
other
way
around
they're
getting
consistent
answers.
A
There's
no
man
means,
if
you
consider
an
ecosystem
of
you,
know
OMS
on
the
one
hand,
side
and
I,
you
know,
like
you,
basically
just
move
the
other
way.
Then
the
problem
is
for
us
to
in
order
to
like
make
this
virtual
viable.
Thank
you
start
going
4-0
points.
Sayo,
the
design
will
be
somewhat
of
a
virtual
ya,
know
you're
saying
well,
but
the
ecosystem
takes
another
three
iterations
to
actually
pick
up
an
appt
everything
work.
Is
it
worth
it
oakwood?
We
just
say
it.
A
E
Going
to
be
designed,
we
have
two
different
well,
so
that's
what
I
was
saying.
I
think
we
tried
to
represent
two
different
concepts
with
one
interface.
One
way
we
could
do,
it
is
just
have
imagined.
Initially,
we
should
interface
with
method,
get
schema
core,
you
know
and
then
in
the
in
the
future
we
had
the
virtual
method
called
cut.
Schema
that
get
schema
core
is
like
a
provider
interface.
Then
schema
is
I,
I
natively
support,
schemas
I,
don't
need
to
provide
it
and
then
then
it
will
all
work
and.
E
A
E
A
B
E
First
and
that's
what
so
dancing
the
bedside
now
I'm
a
sound
right
and
I.
This
is
my
subtype.
Yes,
I
implemented
this
interface
and
I
implemented
it's
in
my
power.
That's
a
different
name
is
designed
explicitly
correct,
I
it
I
explicitly
domestic
now
I
recombine
to
a
new
version
of
this
based
on
and
I
know
that
this,
which
I
meant
what
I
just
override
it
well
I
kind
of
will
keep
both
of
them.
Consistent
I
will
make
sure
that
the
repeater
is
to
say
that
one.
B
A
F
A
C
A
A
With
that's
extending
my
point,
so
that
means
for
eternity.
If
I
want
to
write
a
provider
that
works
with
the
ecosystem,
I
have
to
override
the
virtual
and
provide
the
interface
in
which
point
I
would
say
why
adding
the
virtual
in
the
first
place.
Let's
look
for
Duncan
say
it's
only
worth
it
if
it's
much
much
simpler
world,
but
the
conch
always
have
to
do
both
anyway,
then
this
is
f1.
F
A
To
have
you
can
say,
like
consumers
should
never
ever
do
the
cast,
because
it
will
not
work
in
full
time
break
anyway.
That's
a
good
this
case
you
would
say
this
is
always
consumer
and
that's
a
fair
argument.
I'm
just
saying
it's
unfortunate
because
it
means
it
like
what
it
totally
matters.
How
you
want
code
consumed
schema
information
if
they
do
it.
Where
are
the
extensions
then,
in
p2
you
can
literally
drop
the
interface
override
the
guy
jumping
interface
is
a
breakage.
A
Nobody
should
be
so
fair
enough,
but
like
let's
say
what
you
write:
a
new
provider,
it's
starting
provider
from
scratch,
and
you
want
an
existing
or
my
fur
to
work
with
that
guy.
It's
the
same
situation
to
implement
the
interface
and
override
the
work.
So
do
you
just
provide
the
the
override
I
think
the
world
we
want
to
have?
Is
that
long-term?
Nobody
ever
has
to
do
in
this
interface.
A
Ever
they
just
have
to
override
the
virtual,
because
it's
the
nice
thing
about
having
a
virtual
and
would
say
if
you
have
to
do
both
realistically,
then
you
know
I
would
not
add
the
virtual
at
all
just
say
yep.
The
way
you
provide
ems
reprimand
interface
but
I.
Think
if
you
say
well,
consumers
should
never
call
the
interface
directly.
They
never
think
it's
fair
to
say.
Well,
you
never
write
this
going
rate.
You
just
call
get
cullen
schema
and
that
guy
will
do
the
right
thing
and
you
want
able
to
adjust.
E
We're
not
gonna
be.
We
cannot
break
anybody
and
I.
Think
if
the
moment
you
implement
the
interface
on
that
provider,
you
will
have
to
keep
implementing
it
now.
Emma
pointed
out
what
it
means
is
that
some
future
providers
will
be
kind
of
forced
to
follow
this
pattern,
despite
the
fact
that
they
don't
have
to
then
I
wouldn't
say
that
anybody.
D
Would
be
broken
are
not
contesting
that
heart.
What
I'm
saying
is
that
if
we
say
that
okay
interfaces
the
only
way
to
go
and
or
if
you
say
that
no,
this
extension
method
is
the
way
to
go
to
access
the
schema,
but
there's
no
mechanism
to
prevent
anyone
from
accessing
this,
keep
my
using
the
interface
and
here
I'm,
not
mr.,
so.
A
A
I'd
rather
have
a
world
where
it
doesn't
matter
how
all
the
consumer
does
it
doesn't
matter
how
the
producers
is
if
the
bruiser,
this
is
the
old
way
and
then
Sumer
the
new,
where
the
other
way
around
they've
always
be
able
to
talk
to
each
other
and
I,
don't
think
we
can
get
to
that
wall,
because
it's
well
because
the
the
channel
differs
at
some
point.
You
know
you
know
you
know
you're
able
to
dispatch
across
these
boundaries.
Well,.
E
A
F
Every
should
do
it,
but
what
is
the
reason
consumer
consuming
I
mean
podcasted
fights
up
like
what
is
because
that's
how
people
yeah,
I
guess,
the
because
the
interfaces
just
have
one
matters
right,
which
is
called
car,
and
then
we
shouldn't,
we
can
put
a
comment.
Iono
should
call
them
get
column
scheme
under
which
did
properly
pants
and.
A
Then
I
caption
yeah,
it's
the
same
of
other
cases.
Right
I
mean
if
you
develop,
miss
you
at
the
interface.
An
interface
looks
like
what
you
what
you
want
like
and
the
question
is:
do
people
understand
this
is
just
for
the
providers
I
mean
you
can
do
certain
things
like
falling
into
different
names.
For
is
nothing
we
have
one,
but
you
can
put
documentation
on
it
and
say
this
is
for
the
provider.
A
E
You
know
there
won't.
There
won't
be
that
many
people
can
implement
the
providers.
I
given
that
you
know
the
complexities
that
we
just
discussed.
I
was
just
not
at
the
virtual.
I
would
just
teach
the
provider.
Vendors
interface
is
the
way
to
get
to
see
much
because
at
least
it's
clean.
They
need
to
know
to
do
it.
It's
not,
as
you
know,
Selena
philtrum
methods
show
up
in
intelligence
and
whenever
you
type
/
eyes,
but
at
least
it's
very
clean
like
once.
You
know
that
you
have
to
implemented.
Interface
is
very
clean.
D
A
Don't
think
we
would
put
the
extension
method.
Yeah
we'll
put
the
interface
in
the
firmer.
Yes,
they
can
change.
Anyways
and
I
mean
they.
You
know
that
allows
providers
to
do
the
same
thing
there.
They
can
decide
to
go
the
old
schema
rod.
Well,
they
can't
go
with
a
new
schema
route
and
yes
within
the
family,
that
will
create
a
rift,
but
hopefully
more
people
share
could
go
between
four
and
fabric,
which
case
it
doesn't
matter
and
then
so.
D
Slightly
different
question
so
I
understand
that
we
support
ECL,
but
what
about
code
violation
whole
compatibility
between
core
and
frame
book,
I
assume
that
that
mean
never
be
possible
right,
because
there
will
always
be
something
I,
hadn't
over
or
ahead.
Remember,
compare
I
mean
we
are
striving
for
the.
What
is
being
able
to
write
health
advance
of
both
sides
of
the
same
binary.
Yes
same
minded,
so
binary
compatibility
is
what
we're
talking
ISM
force
upset.
I
was
wondering
that.
D
A
B
A
F
F
E
Yeah
yeah,
the
core
would
always
would
solve
one
problem,
but
it
introduces
another.
It
solves
the
problem
that
you
know
you
can.
You
can
cast
in
this
virtual
method
to
this
interface
and
call
this
method
without
worrying
that
now
somebody
implements
you
know
another
interface
that
has
a
method
with
the
same
name,
and
now
it's
infinite.
Recursion
basically
have
two
different
methods
correct,
so
they
you
don't
create
infinite
because
it
introduces
the
problem.
The
team
are
pointed
out
that
now
you
kind
of
have
to
implement
two
different
methods
they
have
to
be.
E
A
F
A
If
your
env
to
where
we
actually
added
botnet
framework
and
the
other
side,
while
you
see
that
in
intellisense
it
will
basically
replace
quote-unquote
override,
essentially
the
the
resolution,
the
compiler
will
see
the
extension
at
the
end,
the
interface
on
the
specific
type.
If
you,
if
you
actually
have
a
secret
data
reader-
and
you
can
call
that
method,
you
will
now
call
directly
all
right,
I
passing
the
extension
method.
His
verse
k,
it's
just
by
system,
/
of
which
wouldn't
be
bad.
A
If
your
DB
data
reader,
you
will
not
see
the
method
at
all,
so
you
only
see
the
extension
method,
in
which
case
that
thing,
that's
the
bad
thing,
so
I,
don't
think.
There's
any
problem
and
I
think
it
just
creates
clean,
intelligent
experience,
because
there's
only
ever
one
method
to
talk
about
and
see
they're
an
extension
method
or
directly
on
the
time.
B
E
E
Of
thing,
though,
we
should
result,
accession
metals
are
great,
but
they
you
cannot
make
them
virtual.
Where
you
can
get
an
extension
methods
in
sightings
extension
method
to
cuss
to
an
interface,
then
you
call
whatever
you
will
treat.
The
default
implementation
is
to
tell
cast,
fails
yeah,
and
then
you
provide
an
interface
that
is
your
virtual
accreditation,
yep
and.
A
A
D
D
A
A
Should
young
thing
you
ever
need
something
else
like
meta
information
for
the
egg,
for
example,
what
happens
for
cases
where
you
have
a
curie
that
has
multiple
result
sets
it
will
find
only
a
list
from
DB
columns.
So
when
I'll
do,
I
know
which
columns
belong
to
which
result
set?
Would
you
say
you
call
the
method
after
you
move
through
the
first
result
set
another.
D
D
D
A
And
then
what
I
would
choose
I
would,
just
if
ever
you
were
just
edited
the
whole
issue,
yeah
strip
it
down
to
what
it
is
now
and
said.
This
is
what
we
discussed.
Okay,
then
you
know
that's.
So
it's
more
like
an
FYI
for
both
of
us
to
be
on
the
same
page,
I,
don't
think,
there's
any
like
major
reasons
I
was
showing.
I
wouldn't
keep
you
all
over
on,
for
instance,
don't
think
we'll
go
back
in
time
and
say:
let's
leave
the
original
proposal
again,
they've
enough
notes.