是否可以执行以下操作:
struct test
{
this
{
get { /*do something*/ }
set { /*do something*/ }
}
}
所以如果有人试图这样做,
test tt = new test();
string asd = tt; // intercept this and then return something else
从概念上讲,您想要在此处执行的操作实际上在 .NET 和 C# 中是可能的,但是您在语法方面是错误的。似乎隐式转换运算符将是这里的解决方案,
例子:
struct Foo
{
public static implicit operator string(Foo value)
{
// Return string that represents the given instance.
}
public static implicit operator Foo(string value)
{
// Return instance of type Foo for given string value.
}
}
这使您可以将字符串(或任何其他类型)分配给/从您的自定义类型(Foo
此处)的对象中返回。
var foo = new Foo();
foo = "foobar";
var string = foo; // "foobar"
当然,这两个隐式转换运算符不必是对称的,尽管通常建议这样做。
注意:还有explicit
转换运算符,但我认为您更喜欢隐式运算符。
扩展MikeP 的答案,您需要以下内容:
public static implicit operator Test( string value )
{
//custom conversion routine
}
或者
public static explicit operator Test( string value )
{
//custom conversion routine
}