C# C自定义对象无效强制转换

C# C自定义对象无效强制转换,c#,casting,C#,Casting,我正试图像下面这样投射我的对象: public interface IObjectComparison { object GetPropertyValue(string property); } public class MyObject : IObjectComparison { public object GetPropertyValue(string property) { ... return (object)...;

我正试图像下面这样投射我的对象:

public interface IObjectComparison
{
    object GetPropertyValue(string property);

}

public class MyObject : IObjectComparison
{
    public object GetPropertyValue(string property)
    {
        ...
        return (object)...;
    }
}
然后

MyObject mo = new MyObject();
IObjectComparison imo = (IObjectComparison) mo;
当从MyObject到IOObject比较转换时,我得到了一个InvalidCastException。为什么?


感谢您的帮助

您根本不需要在此处进行强制转换。只需使用:

MyObject mo = new MyObject();
IObjectComparison imo = mo;
此代码工作正常:

public interface IObjectComparison
{
    object GetPropertyValue(string property);
}

public class MyObject : IObjectComparison
{
    public object GetPropertyValue(string property)
    {
        return new object();
    }
}

class Program
{
    static void Main()
    {
        MyObject mo = new MyObject();
        IObjectComparison imo = (IObjectComparison)mo;
    }

}

一旦MyObject中的GetPropertyValue是公共的,这段代码就可以正常工作。当接口正确实现时,没有强制转换异常。如果代码中有,请检查MyObject构造函数。是否确定这是您的实际代码?请提供一个示例来说明您的问题。