VB.NET如何允许人们实现一个类而不让人们看到或更改代码?
如何允许人们在不让他们看到或更改代码的情况下实现类?您应该使用VB.NET如何允许人们实现一个类而不让人们看到或更改代码?,vb.net,Vb.net,如何允许人们在不让他们看到或更改代码的情况下实现类?您应该使用private关键字来防止类的客户端直接访问或修改字段。您可以通过public或protected关键字(用于继承)公开希望客户端访问的方法和属性。实现意味着接口。您可以在提供给上述人员的.NET程序集(.dll)中定义一个接口。接口中没有实现。除了属性、方法名称和类型之外,没有要更改的代码 Public Interface IFoo Sub Bar() End Interface 如果此代码在代码文件中提供给用户,则用户可
private
关键字来防止类的客户端直接访问或修改字段。您可以通过public
或protected
关键字(用于继承)公开希望客户端访问的方法和属性。实现意味着接口。您可以在提供给上述人员的.NET程序集(.dll)中定义一个接口。接口中没有实现。除了属性、方法名称和类型之外,没有要更改的代码
Public Interface IFoo
Sub Bar()
End Interface
如果此代码在代码文件中提供给用户,则用户可以更改接口的定义
还有一个抽象类,在VB中称为MustInherit。其他类可以继承或从中派生(如您的问题所述,不是实现,但您可能是这个意思)
如果您在代码文件中将其提供给用户,他们可以更改Bar()
中发生的事情,或者真正做任何他们想做的事情。同样,将其放入.NET程序集中并将.dll提供给用户可以防止这种情况发生。在大多数情况下,这足以防止人们更改您的代码
可以通过将项目的输出类型设置为类库来实现这一点。这将编译成一个.dll文件
构建项目。输出目录中将有一个.dll文件(如果编译成功)
然后,您或其他人可以在新项目中添加对类库创建的.dll文件的引用。您可以声明一个实现其中定义的公共接口的类
Public Class MyIFoo
Implements WindowsApplication1.IFoo
Public Sub Bar() Implements WindowsApplication1.IFoo.Bar
End Sub
End Class
和/或创建一个继承在.dll中创建的抽象类的类
Public Class MyFoo
Inherits WindowsApplication1.Foo
Public Overrides Sub Barr()
End Sub
End Class
在新项目中,您无法查看或更改接口IFoo或抽象类Foo的代码。您始终可以1)将类编译为二进制程序集,2)将程序集写入.dll并对其进行加密,然后3)解密.dll并在运行时动态加载。但这似乎有点极端,不是吗?问:使用“private”简化有什么不对?请更具体一点。“实现类”是什么意思?你是说写一个实现接口的类,还是别的什么?你想让人们看不到什么代码?很难弄清楚你想要支持什么样的场景。这个答案与“允许人们实现一个类”或“不让他们看到或更改代码”有什么关系?@Verdolino我之前对这个有点模糊的问题的解释让我找到了这个答案。Alfie可能指的是创建一个程序集,在这种情况下,您的答案很好!
Public Class MyFoo
Inherits WindowsApplication1.Foo
Public Overrides Sub Barr()
End Sub
End Class