【发布时间】:2010-10-20 15:39:36
【问题描述】:
我有类似这样的课程设置:
<DataContract()> _
Public MustInherit Class SystemTaskProcessBase
Public MustOverride ReadOnly Property Name() As String
Public MustOverride ReadOnly Property Description() As String
Public MustOverride Property Result() As SystemTaskResult
<DataMember()> _
Private _TaskID As Integer = 0
Public Property TaskID() As Integer
Get
Return _TaskID
End Get
Set(ByVal value As Integer)
_TaskID = value
End Set
End Property
End Class
<DataContract()> _
Public Class RebootSystemTaskProcess
Inherits SystemTaskProcessBase
Private _Name As String = "Reboot System"
Public Overrides ReadOnly Property Name() As String
Get
Return _Name
End Get
End Property
Private _Description As String = "Task for the client to reboot itself internally."
Public Overrides ReadOnly Property Description() As String
Get
Return _Description
End Get
End Property
<DataMember()> _
Public _Result As SystemTaskResult = SystemTaskResult.NotProcessed
Public Overrides Property Result() As SystemTaskResult
Get
Return _Result
End Get
Set(ByVal value As SystemTaskResult)
_Result = value
End Set
End Property
End Class
<DataContract()> _
Public Class DeleteFileSystemTaskProcess
Inherits SystemTaskProcessBase
Private _Name As String = "Delete File"
Public Overrides ReadOnly Property Name() As String
Get
Return _Name
End Get
End Property
Private _Description As String = "Task for the client to delete a local file."
Public Overrides ReadOnly Property Description() As String
Get
Return _Description
End Get
End Property
<DataMember()> _
Public _Result As SystemTaskResult = SystemTaskResult.NotProcessed
Public Overrides Property Result() As SystemTaskResult
Get
Return _Result
End Get
Set(ByVal value As SystemTaskResult)
_Result = value
End Set
End Property
<DataMember()> _
Private _File As FileInfo
Public Property File() As FileInfo
Get
Return _File
End Get
Set(ByVal value As FileInfo)
_File = value
End Set
End Property
End Class
我需要在客户端系统上使用这些类,还需要能够通过管理界面创建这些“任务”。继承基类的每个类(任务)都可以有自己的属性,这些属性对每个类都是唯一的,但同时共享相同的公共基类属性。例如,上面显示了一个重新启动任务和一个删除文件任务,删除文件任务需要知道要删除哪个文件,因此有一个属性。但是重启任务不需要这个属性。因此,当管理应用程序创建这些任务时,它不应该为重新启动任务的文件属性提供文本框。以后可能会创建更多具有完全不同属性的任务。
例如,我将如何为 WinForms 管理应用程序提供一种将每个类枚举到 ListView 中的方法,并允许用户创建这些任务并填写每个类将具有的动态属性?
所需的功能是创建一个任务表单,根据每个类中的公共属性,根据需要创建可用于属性的动态控件,但同时还具有可用的基类属性。
感谢任何想法。
谢谢, 斯科特
【问题讨论】:
标签: c# vb.net class abstract-class