How do I use an Interface or Abstract class in C#?
已向我提供第三方DLL。
我第一次尝试启动对象是这样的:
1
| TestClass MyClass = new TestClass (); |
但是Visual Studio告诉我使用该接口。
我以前从未做过,也不知道从哪里开始。
错误:
The Type 'MyClass.blabla' has no constructors defined Interope type
'MyClass.Subclass' cannot be embedded. Use the applicable interface
instead.
号
- 它告诉你使用什么接口?你能把问题的确切错误信息贴出来吗?
- 只要第三方dll提供接口,否则可以使用var关键字
- 这是一个COM API吗?
- 类型"myClass.blablabla"没有已定义的构造函数互操作类型"myClass.subclass"不能嵌入。而是使用适用的接口。
这可能是因为您使用的是COM类。如果是这样,你很可能会写:
1
| ITest myTest = new TestClass (); |
COM包装器经常通过名为TestClass的组件类公开ITest接口。但是,在使用COM时,(按设计)通常只针对接口(ITest编写),不希望直接针对实现编写。
它可能为您提供某种初始化方法,或者作为构造函数传递。不能像尝试的那样(即调用构造函数)实例化抽象类或接口。
这完全取决于如何声明TestClass。如果testclass是abstract,则不能直接创建其实例,而是必须从testclass的Derived类中的一个创建实例。
1
| TestClass test = new TestClassDerived (); |
哪里
1 2 3 4
| class TestClassDerived : TestClass
{
} |
号
- 我尝试过这个方法,但它希望我在testclassderived中实现所有的testclass函数。有几百个。我只想访问已经在DLL中的函数。
- 如果有100种方法,你必须写出来!这就是面向对象编程的工作原理。
- Visual Studio会生成所有需要的方法,因此,如果只需要使用现有的非抽象方法,就不必担心了。