获得一个类型

bas*_*ays 0 c# reflection

我目前正在尝试获取对象的类型,就像我的应用程序的后续部分一样.这主要是为了一个疯狂的情况,如果我可以让这个工作,将会更加清洁.我写了下面的单元测试,希望能解释我希望能够工作的内容.

using System;
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;

namespace Test.Helper
{
    [TestFixture]
    public class CastingTests
    {
        public interface IStub { }
        public class Stub : IStub { }

        protected static Type GetCast(object sample)
        {
            //TODO work on getting method to return casted type
            throw new NotImplementedException();
        }

        [Test]
        public void GettingCastReturnsCastedType()
        {
            IStub stub = new Stub();
            Type type = GetCast(stub);
            Assert.That(type, Is.EqualTo(typeof(IStub)));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我几乎需要找到一种方法来动态地从样本对象中获取IStub类型.在应用程序中,它可以是传入对象时的任何对象.我不知道这是否可能,但如果是的话会很酷.感谢您的帮助!

Ada*_*son 5

转换对象对该对象没有任何实际影响,可能的例外是该类是否定义了对原始值执行操作的显式转换产生了副作用......真正模糊和不直观的情况.

至于一般的解决方案,不,没有办法确定它"之前"是什么,因为它仍然是同一个对象,只是从代码的角度看作不同的类型.实例本身是一样的.