это возможный сделать что-то как следующее:
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"
Два оператора неявного преобразования, конечно, не обязательно должны быть симметричными, хотя обычно это рекомендуется.
Примечание. Существуют также явные
операторы преобразования, но я думаю, что вам больше нужны неявные операторы.
Расширяя ответ MikeP , вы хотите что-то вроде:
public static implicit operator Test( string value )
{
//custom conversion routine
}
или
public static explicit operator Test( string value )
{
//custom conversion routine
}
Вы можете определить неявные и явные операторы преобразования в ваш настраиваемый тип и обратно.
public static implicit operator string(test value)
{
return "something else";
}