对于python来说,什么是时髦的对等物:
class ControllerError(Exception):
class OperationFailed(ControllerError):
def __init__(self, code = None, message = None):
super(ControllerError, self).__init__(message)
self.code = code
self.message = message对于那些如此纯粹的人,我迄今为止的尝试是:
Class ControllerError : System.Exception
{
}
Class OperationFailed : ControllerError
{
$Code
$Message
OperationFailed ($Code, $Message)
{
$this.Code = $Code
$this.Message = $Message
}
}发布于 2016-04-27 21:19:01
你的东西怎么了?这在PowerShell 5.0中很好:
Class ControllerError : System.Exception
{
}
Class OperationFailed : ControllerError
{
$Code
$Message
OperationFailed ($Code, $Message)
{
$this.Code = $Code
$this.Message = $Message
}
}
$o = [operationfailed]::new("500","Internal server errror")
$o.Code
500
$o.Message
Internal server errror
$o | Get-Member | Select Name, MemberType
Name MemberType
---- ----------
Equals Method
GetBaseException Method
GetHashCode Method
GetObjectData Method
GetType Method
ToString Method
Code Property
Data Property
HelpLink Property
HResult Property
InnerException Property
Message Property
Source Property
StackTrace Property
TargetSite Property
$o.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False OperationFailed ControllerError
$o.gettype().BaseType
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False ControllerError System.Exception我建议为$Code和$Message指定一个类型,因为您可能不希望它们是System.Object。前:
Class OperationFailed : ControllerError
{
[string]$Code
[string]$Message
OperationFailed ([string]$Code, [string]$Message)
{
$this.Code = $Code
$this.Message = $Message
}
}如果您真的想使用基本构造函数(或者您希望使用Powershell < 5.0),那么您需要使用C#和Add-Type
$def = @"
public class ControllerError : System.Exception
{
public ControllerError(string message) : base(message) { }
}
public class OperationFailed : ControllerError
{
public string Code;
public OperationFailed(string code, string message) : base(message)
{
this.Code = code;
}
}
"@
Add-Type -TypeDefinition $def
$o = [OperationFailed]::new("500","internal server error")https://stackoverflow.com/questions/36900641
复制相似问题