コード例 #1
0
        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);
        }
コード例 #2
0
 public abstract string Bypass(IDummyFieldObject obj);
コード例 #3
0
 public abstract string TryGetReference(ref IDummyFieldObject obj);
コード例 #4
0
 public abstract string TryGetObscure(out IDummyFieldObject obj);
 public virtual bool TryGetPrivateObscure(out IDummyFieldObject obj, string wrong)
 {
     obj = default;
     return(false);
 }
コード例 #6
0
        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;
        }
コード例 #7
0
 public abstract bool TryGetPrivateReference(ref IDummyFieldObject obj);
コード例 #8
0
 public abstract IDummyFieldObject Bypass(IDummyFieldObject obj, string wrong);
コード例 #9
0
 public virtual string TryGetPrivateReference(ref IDummyFieldObject obj)
 {
     return(string.Empty);
 }
コード例 #10
0
 public virtual string TryGetPrivateObscure(out IDummyFieldObject obj)
 {
     obj = default;
     return(string.Empty);
 }
コード例 #11
0
 public abstract bool NotTryGetReference(ref IDummyFieldObject obj);
コード例 #12
0
 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);
 }
コード例 #15
0
 public abstract bool TryGetObscure(out IDummyFieldObject obj, string wrong);
コード例 #16
0
 public abstract bool TryGetReference(ref IDummyFieldObject obj, string wrong);
コード例 #17
0
 public virtual string Bypass(IDummyFieldObject obj) => null;
コード例 #18
0
 public abstract bool TryGetPrivateObscure(out IDummyFieldObject obj);
コード例 #19
0
 public virtual bool NotTryGetPrivateObscure(out IDummyFieldObject obj)
 {
     obj = default;
     return(false);
 }
コード例 #20
0
 public abstract IDummyFieldObject Bypass(IDummyFieldObject obj);
コード例 #21
0
 public virtual bool NotTryGetPrivateReference(ref IDummyFieldObject obj)
 {
     return(false);
 }
コード例 #22
0
 public virtual IDummyFieldObject NotBypass(IDummyFieldObject obj) => null;
コード例 #23
0
 public virtual bool TryGetReference(ref IDummyFieldObject obj)
 {
     return(false);
 }