如何更改以下语句,使其接受任何类型而不是长?现在这里是捕获,如果没有构造函数我不想编译。所以,如果有一个字符串的构造函数,long和double但没有bool我怎么能让这一行适用于所有这些支持类型呢?
ATM我只是复制粘贴它,但我不想这样做,如果我有20种(任务可能是微不足道的)
public static explicit operator MyClass(long v) { return new MyClass(v); }
答案 0 :(得分:2)
也许它有效:
public static explicit operator MyClass<T>(T t) where T:new()
{
return new MyClass(t);
}
修改强>
我刚刚检查了你的请求,发现很奇怪。 “所以如果有一个字符串的构造函数,long和double但没有bool” 你能告诉我你为什么要这样做。
修改强>
我试过我的机器,似乎泛型类型不能用于显式方法。也许我们只能回到对象参数?
答案 1 :(得分:2)
现在我可以告诉你,问题的答案是“不,我们不能”因为:
用户定义的转换必须转换为封闭类型或来自封闭类型。
这就是为什么我们不能在这里使用泛型类型。
public class Order
{
public string Vender { get; set; }
public decimal Amount { get; set; }
}
public class AnotherOrder
{
public string Vender { get; set; }
public decimal Amount { get; set; }
public static explicit operator AnotherOrder(Order o)
{
//this method can be put in Order or AnotherOrder only
}
}
答案 2 :(得分:0)
如果我没弄错的话,请使用对象类型。
public static explicit operator MyClass(object v) { return new MyClass(v); }