C#:如何将对象强制转换为其实现的接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:如何将对象强制转换为其实现的接口相关的知识,希望对你有一定的参考价值。

我想将一个对象转换为其实现的接口。但是有问题。

public class A : IA
{
    public void Do() { }
}

public interface IA
{
    void Do();
}

void ConvertType(object s)
{
    var interface = s.GetType().GetInterfaces().FirstOrDefault(); // if s is of type A then interface is IA
    var s = Convert.ChangeType(instance, type);
}

我正在例外:

对象必须实现IConvertible。在System.Convert.ChangeType

是否有更好的方法将对象转换为其实现的接口?我希望对象A为IA类型。

编辑:我不想直接进行转换,因为我事先不知道所有对象或其接口。类A和接口IA只是说明问题的示例,我事先不知道该对象。

答案

您可以这样投射:

IA instanceCasted = (IA) instance;

或者,如果您不想将其存储到变量中,则可以执行以下操作:

((IA)instance).DoYourMethod();

以上是关于C#:如何将对象强制转换为其实现的接口的主要内容,如果未能解决你的问题,请参考以下文章

.NET:无法将对象转换为它实现的接口

无法将类型为“Word.ApplicationClass”的 COM 对象强制转换为接口类型“Word._Application”

退出软件Excel出现无法将类型为“....”的 COM 对象强制转换为接口类型“....Excel._Application”

Android kotlin:无法读取类文件

如何将 java 类名作为参数传递并将其用作方法中的强制转换

Java 如何实现父类转换为子类的效果?