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构造函数。是否确定这是您的实际代码?请提供一个示例来说明您的问题。