►
From YouTube: GitHub Quick Reviews
Description
Powered by Restream https://restream.io/
B
Yep
sure
so
in
microsoft,
extensions
configuration
there's
an
api
today,
obviously
to
get
a
certain
section,
and
even
if
that
section
is
missing,
it'll
never
return
null.
It
just
returns,
basically
an
empty
object
right
and
the
the
example
the
example
problem
here.
If
you
scroll
down
a
little
bit
well,
it's
actually
right.
There
usage
examples
is
like
in
this
config
dot,
add
end
log
new
end
log
logging
configuration
and
then
passing
in
configuration
dot
gets.
If
you
get
required
section
is
the
new
it
proposed
api.
B
But
if
you
pass
in
get
section
parens
n
log
it'll
get
section
even
if
it's
not
there
will
return
an
empty
object
and
then
end
logging
configuration
will
basically
it
it'll,
basically
not
log
anything,
because
there
was
nothing
configured
in
that
section.
B
And
so
the
proposal
here
is
to
add
a
new
api
called
get
required
section
and
what
get
required
section
will
do
is
if
it,
if
that
section,
doesn't
exist
or
it's
empty
it'll
throw
an
exception.
So
this
is
analogous
like
he
says
it's
analogous
to
get
required
service
in
in
dependency
injection,
so
in
dependency
injection
you
can
say,
give
me
the
service.
If
the
service
doesn't
exist,
it'll
return
all,
but
you
can
say
give
me
a
required
service
and
the
serv.
If
the
service
doesn't
exist,
it
throws
an
invalid
up
exception.
A
B
A
B
I
mean
there's
some
there's
some
cases
where
you
know
certain
components
will
call
get
section
right,
because
if
certain
things,
certain
components
have
knowledge
of
configuration
and
we'll
look
to
see.
If,
if
there's
you
know
existing
key
set
in
the
configuration,
but
if
you
it'll
always
call
git
section
and
then
it'll
act
like
you
know
that
key
doesn't
exist
and
it'll
it.
Basically
existing
code
will
just
continue
to
work
right.
It's
just
a
new
api
that'll
throw
when
somebody
wants
to
say
hey.
I
I
need
whoever's
configuring
this
app
to
fill
out.
This
section.
A
Yeah,
my
concern
is
not
that
existing
code
doesn't
work.
It's
more
like
you
know,
for
you
know,
take
the
service
one
right.
Very
few
people
call
get
service
right.
The
vast
majority
of
the
people
just
imports
them
with
the
eye
right
so
like.
If,
if
that's
the
case
for
configuration,
my
concern
is
just
cool.
We
have
an
api
that
almost
nobody
will
be
able
to
use,
because
the
io,
basically
just
calls
get
required
section
right.
A
The
only
concern
I
have
is-
and
I
think
I
said
this
before
down
there
like
I
to
me-
the
it
doesn't
seem
like
this-
is
required
to
be
in
an
actual
interface
method,
because
basically,
I
think
the
implementation
dpr
linked
was
also
just
a
call
to
get
section,
and
if
that
thing
doesn't
have
any
keys
or
is
empty,
it
throws,
which
means
we
could
trivially,
make
it
an
extension
method,
and
we
should
generally
not
break
people
for
things
like.
B
Yeah
I
mean
if
this
was
a
base
class
right.
If
if
they
did
have
abstract
base
class
configuration
yeah,
you
know,
then
maybe
you
could
make
the
justification,
but
I
totally
agree
that
this
fits
better
as
an
extension
method,
and
then
I
went
and
looked
at
get
required
service
and
that's
actually
implemented
as
an
extension
method
as
well
yeah.
I
totally
agree
it
should
be
an
extension
method.
A
I
think
eric
had
one
other
question,
which
is:
how
does
one
distinguish
from
present
but
empty
section?
I
guess
you
can't
right
because
it's
basically
the
same
as
an
empty
section.
B
A
A
B
A
B
A
Yeah
yeah,
I
mean
I
don't
know
from
my
point
of
view
like
it's
totally
reasonable.
I
think
extension
methods
make
sense.
I
hear
what
I'm
probably
butchering
his
name.
Now,
michelle
or
michael
is
saying
which
is
yeah.
It
would
be
nice
to
have
it
on
the
same
type,
but
at
the
same
time
that
ship
has
sailed
when
we
shipped,
I
configuration
right.
So
I
would
just
say
sorry:
that's
yeah,.
B
A
A
A
B
B
A
A
You
don't
throw
argument
exception
either
you
just
throw
a
format
exception,
usually
right
which
right
is
because,
basically,
I
would
say
if
you
see
an
argument
exception.
Your
code
has
a
bug
versus
this
one
yeah
there
is
a
bug
somewhere,
but
it's
not
the
call
sort
of
get
required
section
right.
It's
somebody
misconfigured
the
thing.
A
D
I
mean
if
we
care
about
having
a
specific
type
exception
later
we
can
make
one
that
derives
from
a
valid
operation
exception.
But
okay
and
like
invalid
operation
exceptions
default
messages.
You
know
the
object
state
was
not
valid
for
the
operation,
you
called
get
required
and
it's
missing.
Well.
The
state
is
not
valid
for
the
operation.
D
D
Yep
yeah
yeah.
B
C
D
Like
I
can't
even
find
one
from
system
configuration,
I
think
it
just
returns
null.
So
yeah
invalid
operation
seems
fine
to
me.
D
B
A
All
right,
then,
I
think
we
can
say
this
is
approved
with
this
little
tweak
here
and
then.
C
E
B
A
D
A
That's
not
a
strong
enough
reason.
Maybe
I
should
actually
say
what
I
mean
all
right.
So
then
this
one
is
done
so
yeah,
I'm
just
proposing
this
one
here,
which
is
you
know,
kind
of
in
line
with
what
stephen
tope
did
the
other
day
with
current
process
id
right.
We,
you
can
already
get
the
prosthetic
suitable
path,
but
basically
you
the
way
you
would
do
it.
A
You
would
say
process
get
current
process
main
module.file
name,
I
think
and
john
is
basically
proposing
just
making
this
a
thing
that
lives
directly
off
of
environment,
which
I
think
is
reasonable
because
it
is
fairly
common
problem.
People
need
to
solve
now,
as
we
were
discussing
this,
it
turns
out
that
it's
actually
not
the
only
way
or
not
the
only
thing.
Basically,
so
I
was
saying
the
way
I
usually
do.
A
It
is
with
environment,
get
command
on
args
subscript
zero,
which
is
basically
this
thing
here,
but
this
doesn't
give
you
the
actual
executable,
as
it
turns
out
that
gives
you
the
virtualized
executables.
So
if
you
call
this
method
today
in
dotnet
core
in
a
shared
framework
environment,
you
will
actually
get
not.net
exe.
You
will
actually
get
food.dll
or
whatever
your
entry
point
is
right.
A
A
Unfortunately,
though,
that's
probably
not
what
most
people
want,
because
the
thing
is,
if
you
actually
run
in
a
shared
fabric
environment,
the
path
to
net
exe
is
usually
not
that
useful
right.
It's
usually
what
you
care
about
is
the
path
to
your
stuff,
because
then
you
use
it
to
either
load
files
or
find
native
modules,
or
something
like
that
right
and
the
same
is
true
with
the
directory.
The
directory
is
actually
a
very
common
thing.
I
actually
didn't
even
know
of
app
context.based
directory.
A
I
usually
ended
up
doing
get
command
line,
arc,
subscript,
zero
and
then
get
basically
path
of
the
like
the
directory
path
of
that
which
works,
because
it
basically
points
to
your
main
right
and
then
that
that's
what
was
what
I
was
using,
but
of
course
just
calling
environment
dot.
You
know
something
would
be
much
much
easier.
A
So
my
argument
is,
I,
I
think,
having
all
three
makes
sense,
but
I'd
rather
have
them
next
to
each
other,
with
some
naming
convention
that
ties
them
together,
and
that
explains
the
developers
what
the
different
choices
are
and
how
you
would
choose
them
right.
So,
basically,
I
would
rename
slightly
what
what
yarn
proposed
if
we
call
the
application
process
path,
just
because
then
we
have
applications
to
prefix
for
all
three
of
them,
and
then
you
know,
process
path
is
documented.
A
It
is
the
thing
is
so
app
context
is
relatively
recent,
and
if
you
look
at
it
it's
it's,
it's
not
really
a
type
that
I
would
want
to
promote
because
it
is
kind
of
the
quirky
stuff
right.
It's
like
you,
know
magic
switches
and
stuff
like
that,
which
I
I
don't
think
that's
like
there's
not
a
lot
of
stuff
on
it.
That
people
care
about
versus
environment
is
the
opposite
right.
That's
where
we
put
all
the
stuff,
that's
actually
useful.
That's
where
you
get
the
command
on
rx.
That's
where
you
get.
A
You
know
whether
you're,
64-bit
or
not
and
like,
and
that
one
is
used
by
a
lot
more
people
today,
so
I
I
would
probably
expect
to
find
it
on
an
environment.
If
I
had
to
search
for
it,
I
just
find
it
we
I
mean
I
could
probably
live
with
all
three
of
them
being
on
app
context
as
well.
D
Fair
enough,
it
feels
analogous
to
you
know,
asking
current
working
directory
before
anybody
has
a
chance
to
set
it,
and
so
if
people
are
already
looking
on
environment,
then
that's
probably
the
reasonable
place
to
put
this
one
and
then
well,
if
they're
getting
entry
point
path
from
command
line,
args,
then
obviously
that
sort
of
makes
sense
there
as
well
and
then
process
path.
Like
honestly,
why
does
anyone
care
about.net.exe?
A
B
A
B
A
A
A
D
Problems
anyway,
yeah,
because
if,
if
right
is
rooted
to
something
whether
it's
drive
rooted
or
absolute
rooted,
then
the
path.combined
does
things.
B
So
like
this
kind
of
is
some
of
the
same
conversation
we
had
about
the
is
operating
system
stuff
right
like
at
what
point
is
environment
just
a
dumping
ground
and
at
what
point
is
app
context.
No
longer
relevant
right
like
it
feels
like
app
context,
is
the
right
thing
for
this.
It
already
has
base
directory.
This
would
be
my
app
context,
process
and
entry
point
paths
being
added
to
it.
A
D
D
Variables,
but
since
these
new
things
are
really
they're
still
back
to
interpretations
of
the
peb,
I
mean
windows
detail
but
they're
they're,
telling
you
how
the
process
started
and
giving
you
a
view
into
the
execution
context
of
the
app
instead
of
having
18
different
members
to
ask
is
the
os
that
the
app
is
running
on
windows
10.
This
feels
to
me
a
little
bit
more
appropriate
to
environment
than
all
the
os
stuff
did
like
the
os.
D
D
A
D
A
D
Four
six
right
context,
I
think,
was
added
in
four
six
to
deal
with
four
five.
Four
six
in
place
upgrades
it's
when
we
started
introducing
quirking.
A
A
A
A
Yes,
I
think
those
were
added
later,
though,
exactly
for
that
reason
like,
I
think,
the
the
the
get
data
api,
I'm
pretty
sure,
came
after
yeah,
so
it
was
in
four
seven
because
we
added
it
to
dot
net
core
v1,
because.
A
A
Oh
totally,
that's
why
I'm
saying
I
should
not
put
more
stuff
on
it
like
to
me.
It's
kind
of
like
a
it's
another
award
in
the
system,
namespace
that,
ideally
should
have
been
hidden
in
system,
runtime,
versioning
or
something
like
it's.
The
functionality
itself
makes
sense,
I'm
not
even
opposed
to
the
api
or
its
shape.
It's
just
that
it
is
basically
the
building
block
for
the
runtime
to
get
versioning
right
right
to
actually
have
backwards,
compatibility
and
that
should
not
be
in
everybody's
face.
I
mean
it's
alphabetically,
unfortunately,
even
before
app
domains.
That's.
D
A
D
Okay,
but
yeah
so
really
to
me
it's
if
we
think
that
this
is
something
that
more
than
ten
percent
of
people
are
gonna
care
about,
then
actually
ten
percent's
a
really
big
number
for
environment.
If
this
is
a
thing
that
feels
like
a
popular
stack,
overflow
question,
which
I
imagine
it
is
then
environment
feels
more
appropriate
because
it's
it's
a
place,
people
I
think,
would
look
for.
B
And
this
thing
is,
this
is
only
going
to
get
more
important
as
like
single
file
becomes
more
of
a
thing,
because
normally
the
way
I
would
get
some
of
these
like.
If
I
wanted
my
entry
point
right,
it's
like
I
would
get
assembly
document
entry
point
assembly,
that
location
and
that
doesn't
work
in
single
file.
A
It
would
be
the
native
holes,
but
it
doesn't
really
matter
and
then
for
framework
dependent.
It
would
be
food
or
dll,
but
either
way,
if
you
just
get
the
directory
path
from
it,
you're
in
the
right,
location,
right
and
then
application
process
path
is
really
the
more
specialized
one
where
it's
like
well.
Do
you
actually
need
the
operating
systems?
Entry
point,
which
is
rare
right?
A
It's
like
forking
as
one
example,
but
I
don't
think
there's
many
examples
where
you
need
that,
but
I
think
it's
an
important
difference
that
we
can't
hide
right
to
like
to
have
exponential
implementation
detail
like
if
you
actually
have
to
fork
the
process.
You
have
to
know
what
your
actual
entry
point
was,
or
I
should
say,
process
path
is.
A
A
D
A
A
C
D
D
And
environment
application
process
path-
I
mean
it's
a
little,
it
slides
less
well
because
application
requires,
I
don't
know,
there's
a.
I
guess.
The
plosive,
followed
by
an
l
is
a
hard
syllable
break
but
gay
words,
but
either
either
way
feels.
A
D
A
D
D
So
it's
it's
sort
of
a
it's
the
host
path.
Unless
the
host
feels
like
telling
you
something
different
and
the
entry
point
path
feels
really
awkward.
If
it
feels
to
me
like
they
should
be
the
same
thing,
but
you
know
I'm
the
the
last
the
tools
that
I
write
are
still
you
know
net
framework
executables
because
well
I
haven't
written
code
for
a
personal
project
in
like
five
years,
so.
B
B
The
default
option
is
shared
runtime,
no,
no,
even
like,
if
you
f5
in
visual
studio
today
and
like
a
net
five
app.
A
A
B
D
Well,
but
if
you're
doing
entry
point
path
based
off
of
the
command
line,
parsing,
that
presumably
will
be
the
executable,
because
the
executable
just
does,
I
assume
it's
core
console
of
find
my
name
rip
off
the
exe,
add
dll
and
go.
A
To
me,
the
only
reason
I
edit
is
because
you
know
that's
the
terms
that
jan
talked
in,
because
you
want
to
describe
the
behavior
that
it
has
right
like
to
me.
It's
yeah.
I
mean
it
doesn't
really
matter
but
like
to,
I
think,
get
commander
and
arcs
will
probably
give
you
the
xe
in
the
dot
net
5
case
where
you
actually
have
a
native
host
that
is
copied
to
the
open
folder,
because.
A
But
the
problem
there
is,
it
also
depends
how
you
launch.
If
you
go
into
the
command
and
you
say.net
run
project,
it
will
effectively
call.net
xe
with.
I
think
it
will
probably
just
call.exe
and
then
exec
the
the
dll
right.
A
C
D
B
B
A
D
Right,
so
I'm
just,
I
guess,
I'm
now
concerned
that
we
would
add
these
things
and
people
still
can't
make
sense
of
them
so
like
what
is
process
path
versus
entry
point
path
supposed
to
tell
me
in
particular,
if
neither
of
them
is
the
name
of
the
file
that
contained
main,
because
that's
what
you,
the
description
here
for
app
entry
point
path,
is
the
name
of
the
file
that
contains
the
main
method.
So
presumably
that
can
be
loaded
by
reflection,
but
can
it.
B
D
B
B
D
A
So
I
was
just
testing
what
actually
ended
up
happening
so
when
you
have
five
in
visual
studio,
so
I
just
printed
all
three
of
them
right
top
to
bottom.
If
you
actually
do
an
f5
in
visual
studio,
what
ends
up
happening?
Is
it
prints,
console
app,
45.xe,
console
f45.dll
and
then
the
folder
containing
both
of
them?
A
If
I
actually
manually
do
it,
if
I
go
to
bin
debug,
not
5
and
I
say
net
exact
console
app
dll,
then
it
will
print
what
you
think
it
will
print.net
exe
console.45.dll
and
then
the
folder
again.
So
it
will
give
you
the
managed
entry
point
in
all
three
cases.
So
for
single
file
I
don't
know,
but
for
for
shared
framework
or
self-contained.
It
will
point
to
the
correct
thing.
So
you
could
be.
D
D
D
A
C
A
D
E
A
B
D
B
B
A
A
A
D
What
can
you
do
for
the
to
tell
some
other
process
hey?
You
could
load
this
with
reflection
and
look
at
all
my
assembly
attributes,
because
there's
no
such
thing
anymore,
you'd
have
to
pass
an.
A
I
mean
the
two
things
I
used
it
for
is
basically
determining
my
application
directory,
which
I
now
can
do
with
app
based
directory
and
the
name
of
my
command
line
app.
So
when
I,
when
you
do
help
about,
I
can
actually
print
the
full
command,
which
you
can
also
do
with
just
getting
the
name
from
app
process
path
about
the
extension.
A
So
I
think
I'm
probably
fine
with
not
having
the
api
get
command
line.
Args
subscript
zero
is
obscure
enough.
That
people
will
probably
not
stumble
across
this
all
the
time
but
yeah.
I
will
probably
regress
all
my
command
line
tools
as
soon
as
I
do
similar
file
builds
for
them.
Because
then
my
command
line
output
will
all
be
empty
strings,
but,
like
yeah,
I
don't
know
what
I
mean
for
reflection.
I
would
I
don't
know
enough
about
single
file,
but
my
first
question
for
reflection
is
how
the
heck
do.
A
D
And
simply
just
assembly
dot
the
hey:
what
are
all
the
assemblies.
A
D
A
D
D
A
B
B
A
A
A
No,
but
that's
what
I'm
saying
you
want
one
api
that
works
for
both
scenarios.
You
don't
want
an
api,
that's
broken
right.
You
don't
want
like.
If,
because
I
mean
what
would
the
statement
look
like,
what
would
I
what
would
I,
if
over
pound,
if
and
then
I
have
to
define
my
own
defines
that
seems
unfortunate.
A
So
so
take
take
the
thing
that
we
were
pushing
earlier,
which
is
doing
the
command
line
host
right
with
host
builder
and
configuration
right.
So
somebody
in
that
world
has
to
reflect
over
all
the
assemblies
find
effectively.
You
know
all
the
services
and
whatnot
and
then
register
them
for
the
eye
right.
So
how?
How
would
you
write
that
code
if.
B
A
That's
what
I'm
saying
I
mean
it
seems
to
me:
there's
a
reflection
api
that
you
want,
which
is
basically
get
all
stuff
in
my
app
or
something
right,
and
that
will
do
the
right
thing
for
for
single
file
and
non-single
file,
but
app
domain
get
loaded.
The
service
is
not
that
because
it's
only
returning
the
things
you
already
loaded.
So
if
you
do
any
sort
of
lazy
initialization,
then
which
but
is
by
default
that
we
don't
load
everything
on
startup,
I
mean
you
could
of
course
force
it,
but
that
kind
of
defeats.
A
The
point
right
I
mean,
then
you
would
do
like
walk
all
the
assemblies
like
so
like
get
the
base
directory,
find
everything,
that's
a
dll
or
xe
and
then
do
assembly.load
on
it
and
then
and
then
ask
get,
get
loaded
assemblies
and
then
in
single
file.
You
know
the
loop
is
just
basically
only
the
exe
file,
and
that
would
flow,
so
you
would
also
have
to
have
a
catch
handler
around
it.
So
it
seems
a
bit
weird
to
do
that.
A
A
A
B
D
B
A
And
you
already
have
an
api
on
assembly,
but
that
gives
you
the
the
entry
point
assembly
right.
It's
like
assembly,
dot,
get
entry
point
or
something
right.
So
if
you
you
just
want
to
get
this,
you
can.
D
A
Yeah
I
mean
I
mean
I
think
that
makes
sense
right
because
they
don't
physically
exist
on
disk
anymore.
So
that
makes
sense
to
me
I
mean
that's
why
I'm
saying
if
the
goal
was
to
just
get,
where
main
is
we'll
just
call
assembly
dot
get
entry
assembly
right?
If
you
want
to
reflect
over
the
thing
that
contains
main
and
if
you
want
to
get
the
actual
path
well,
then
that
scenario
is
just
fundamentally
not
portable
right,
so
it
seems
reasonable
to
not
have,
and
then
the
other
question
is
just
is
like.
D
Yeah,
I
mean
the
only
like
the
only
weird
thing
that
I
can
think
of
that
somebody
would
want
to
understand
the
file
for
where
maine
lived
is.
If
they
wanted
to.
You
know,
ask
what
the
last
modified
time
of
their
application
is
as
part
of
a
self
update
check
like
I
can
invent
a
scenario
but,
and
so
if,
if
the
other
one's
returning.net.exe
then
you're
like
well,
that's
not
the
one.
D
A
A
Right,
but
if
you
just
go,
do
dot
net
run.
It
was
the
right
thing
if
you,
if
you
do
f5
images
with
it,
will
do
the
right
thing.
So
the
only
case
when
you
manually
call
net
food
or
dll
right,
which
is
not
that
common.
D
A
Yeah,
I
guess
that's
fair.
I
mean
I'm
also
not
entirely
sure
what
application
dot
entry
assembly
will
give
you,
when
you
run
an
entire
either
because.
A
Yeah,
that's
what
I'm
saying,
though,
like
I'm
not
entirely
sure
what
the
glue
code
is
right
like.
If
are
they
literally
just
calling
your
stuff,
or
is
there
some
net
core
loader
in
front
of
it
right?
So
it
might
still
not
give
you
your
assembly,
it
might
give
you
somebody
else's
assembly
that
comes
from
infrastructure
right,
so
that's
yeah.
I
think.
A
A
A
A
D
Sure
you
can
ask
what
your
assembly
file
version
attribute
was,
but
the
file
version
may
not
even
make
any
sense
depending
on
what
the
host
is
generating
or
the
way
that
the
single
file
generates
the
the
executable
host,
but
the
for
other
things
that
it
does.
But
you
don't
want
the
file.
Verb.Net,
probably
I
mean
maybe
you
do,
but.
D
A
E
A
A
A
D
Indeed-
and
it's
not
like
there's
a
like
this-
wouldn't
meet
the
scenario
for
porting
into
five
at
this
point,
so
it's
not
like
it's
gonna
go
out
the
door
before
he
gets
a
chance
to
respond
right
for
sure
for
sure.
A
It's
also
fine
yeah,
so
yeah
all
right
then
still
longer
than
expected,
but
that
was
a
good
chat.