2017-01-19 98 views
0

我想投我的目标如下图所示:C#自定义对象无效转换

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铸造IObjectComparison,我发现了一个InvalidCastException的 。为什么?

感谢您的帮助

+3

一旦GetPropertyValue在为MyObject是公开的,这代码工作正常.. – stuartd

+1

[按预期工作](https://dotnetfiddle.net/hlNlWJ),接口正确实施时没有转换异常。 –

+0

检查MyObject构造函数,如果你有你的代码。 –

回答

1

你不需要在all.Just使用拈:

MyObject mo = new MyObject(); 
IObjectComparison imo = mo; 
0

此代码工作正常:

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; 
    } 

}