Ada*_*oll 4 .net powershell sdk
如何在其运算符时创建一个对象,例如:
operator > (Object obj1, Object obj2)
operator < (Object obj1, Object obj2)
Run Code Online (Sandbox Code Playgroud)
,被覆盖PowerShell使用这些运算符?
这样:
where-object { $CustomObject -gt 12 }
Run Code Online (Sandbox Code Playgroud)
会打电话:
public static bool operator > (Object object1, Object object2)
Run Code Online (Sandbox Code Playgroud)
可能吗?
澄清:
Kei*_*ill 14
PowerShell使用IComparable接口来比较对象.至少,这是以下小实验所显示的:
$src = @'
using System;
namespace Acme
{
public class Foo : IComparable
{
public Foo(int value)
{
this.Value = value;
}
public int Value { get; private set; }
public static bool operator >(Foo foo1, Foo foo2)
{
Console.WriteLine("In operator >");
return (foo1.Value > foo2.Value);
}
public static bool operator <(Foo foo1, Foo foo2)
{
Console.WriteLine("In operator <");
return (foo1.Value < foo2.Value);
}
public int CompareTo(object obj)
{
Console.WriteLine("In CompareTo");
if (obj == null) return 1;
Foo foo2 = obj as Foo;
if (foo2 == null) throw new ArgumentException("Not type Foo","obj");
if (this.Value == foo2.Value)
{
return 0;
}
else if (this.Value > foo2.Value)
{
return 1;
}
else
{
return -1;
}
}
}
}
'@
Add-Type -TypeDefinition $src -Language CSharpVersion3
$foo1 = new-object Acme.Foo 4
$foo2 = new-object Acme.Foo 8
$foo1 -gt $foo2
In CompareTo
False
Run Code Online (Sandbox Code Playgroud)
我不相信你可以在 Powershell 中进行运算符重载。
| 归档时间: |
|
| 查看次数: |
1479 次 |
| 最近记录: |