我正在尝试创建一个公共财产,它可以是类型long
或Guid
. 泛型可以吗?例如类似的东西
public virtual T where T: long or Gui Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
泛型可以吗?
这是不可能的,但您可以通过使用 useimplicit operator
来支持long
和Guid
,示例代码:
internal class YourId
{
public long LongId { get; private set; }
public Guid GuidId { get; private set; }
public YourId(long longValue)
{
LongId = longValue;
}
public YourId(Guid guidValue)
{
GuidId = guidValue;
}
public static implicit operator long(YourId yourId)
{
return yourId.LongId;
}
public static implicit operator YourId(long value)
{
return new YourId(value);
}
public static implicit operator Guid(YourId yourId)
{
return yourId.GuidId;
}
public static implicit operator YourId(Guid value)
{
return new YourId(value);
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用:
YourId id1 = Guid.NewGuid();
YourId id2 = long.MaxValue;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
931 次 |
最近记录: |