public void StaticFields(object obscureObject) { var duckInterface = obscureObject.DuckCast <IObscureDuckType>(); var duckAbstract = obscureObject.DuckCast <ObscureDuckTypeAbstractClass>(); var duckVirtual = obscureObject.DuckCast <ObscureDuckTypeVirtualClass>(); IDummyFieldObject newDummy = null; // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 42 }).DuckCast <IDummyFieldObject>(); duckInterface.PublicStaticSelfTypeField = newDummy; Assert.Equal(42, duckInterface.PublicStaticSelfTypeField.MagicNumber); Assert.Equal(42, duckAbstract.PublicStaticSelfTypeField.MagicNumber); Assert.Equal(42, duckVirtual.PublicStaticSelfTypeField.MagicNumber); // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 52 }).DuckCast <IDummyFieldObject>(); duckInterface.InternalStaticSelfTypeField = newDummy; Assert.Equal(52, duckInterface.InternalStaticSelfTypeField.MagicNumber); Assert.Equal(52, duckAbstract.InternalStaticSelfTypeField.MagicNumber); Assert.Equal(52, duckVirtual.InternalStaticSelfTypeField.MagicNumber); // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 62 }).DuckCast <IDummyFieldObject>(); duckAbstract.ProtectedStaticSelfTypeField = newDummy; Assert.Equal(62, duckInterface.ProtectedStaticSelfTypeField.MagicNumber); Assert.Equal(62, duckAbstract.ProtectedStaticSelfTypeField.MagicNumber); Assert.Equal(62, duckVirtual.ProtectedStaticSelfTypeField.MagicNumber); // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 72 }).DuckCast <IDummyFieldObject>(); duckAbstract.PrivateStaticSelfTypeField = newDummy; Assert.Equal(72, duckInterface.PrivateStaticSelfTypeField.MagicNumber); Assert.Equal(72, duckAbstract.PrivateStaticSelfTypeField.MagicNumber); Assert.Equal(72, duckVirtual.PrivateStaticSelfTypeField.MagicNumber); }
public abstract string Bypass(IDummyFieldObject obj);
public abstract string TryGetReference(ref IDummyFieldObject obj);
public abstract string TryGetObscure(out IDummyFieldObject obj);
public virtual bool TryGetPrivateObscure(out IDummyFieldObject obj, string wrong) { obj = default; return(false); }
public void Properties(object obscureObject) { var duckInterface = obscureObject.As <IObscureDuckType>(); var duckAbstract = obscureObject.As <ObscureDuckTypeAbstractClass>(); var duckVirtual = obscureObject.As <ObscureDuckTypeVirtualClass>(); IDummyFieldObject newDummy = null; // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 42 }).As <IDummyFieldObject>(); duckInterface.PublicGetSetSelfType = newDummy; Assert.Equal(42, duckInterface.PublicGetSetSelfType.MagicNumber); Assert.Equal(42, duckAbstract.PublicGetSetSelfType.MagicNumber); Assert.Equal(42, duckVirtual.PublicGetSetSelfType.MagicNumber); // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 52 }).As <IDummyFieldObject>(); duckInterface.InternalGetSetSelfType = newDummy; Assert.Equal(52, duckInterface.InternalGetSetSelfType.MagicNumber); Assert.Equal(52, duckAbstract.InternalGetSetSelfType.MagicNumber); Assert.Equal(52, duckVirtual.InternalGetSetSelfType.MagicNumber); newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 42 }).As <IDummyFieldObject>(); duckInterface.InternalGetSetSelfType = newDummy; // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 62 }).As <IDummyFieldObject>(); duckInterface.ProtectedGetSetSelfType = newDummy; Assert.Equal(62, duckInterface.ProtectedGetSetSelfType.MagicNumber); Assert.Equal(62, duckAbstract.ProtectedGetSetSelfType.MagicNumber); Assert.Equal(62, duckVirtual.ProtectedGetSetSelfType.MagicNumber); newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 42 }).As <IDummyFieldObject>(); duckInterface.ProtectedGetSetSelfType = newDummy; // * newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 72 }).As <IDummyFieldObject>(); duckInterface.PrivateGetSetSelfType = newDummy; Assert.Equal(72, duckInterface.PrivateGetSetSelfType.MagicNumber); Assert.Equal(72, duckAbstract.PrivateGetSetSelfType.MagicNumber); Assert.Equal(72, duckVirtual.PrivateGetSetSelfType.MagicNumber); newDummy = (new ObscureObject.DummyFieldObject { MagicNumber = 42 }).As <IDummyFieldObject>(); duckInterface.PrivateGetSetSelfType = newDummy; }
public abstract bool TryGetPrivateReference(ref IDummyFieldObject obj);
public abstract IDummyFieldObject Bypass(IDummyFieldObject obj, string wrong);
public virtual string TryGetPrivateReference(ref IDummyFieldObject obj) { return(string.Empty); }
public virtual string TryGetPrivateObscure(out IDummyFieldObject obj) { obj = default; return(string.Empty); }
public abstract bool NotTryGetReference(ref IDummyFieldObject obj);
public abstract bool NotTryGetObscure(out IDummyFieldObject obj);
public virtual IDummyFieldObject Bypass(IDummyFieldObject obj, string wrong) => null;
public virtual bool TryGetPrivateReference(ref IDummyFieldObject obj, string wrong) { return(false); }
public abstract bool TryGetObscure(out IDummyFieldObject obj, string wrong);
public abstract bool TryGetReference(ref IDummyFieldObject obj, string wrong);
public virtual string Bypass(IDummyFieldObject obj) => null;
public abstract bool TryGetPrivateObscure(out IDummyFieldObject obj);
public virtual bool NotTryGetPrivateObscure(out IDummyFieldObject obj) { obj = default; return(false); }
public abstract IDummyFieldObject Bypass(IDummyFieldObject obj);
public virtual bool NotTryGetPrivateReference(ref IDummyFieldObject obj) { return(false); }
public virtual IDummyFieldObject NotBypass(IDummyFieldObject obj) => null;
public virtual bool TryGetReference(ref IDummyFieldObject obj) { return(false); }