Могу ли я создавать аксессоры на структурах для автоматического преобразования в/из других типов данных?

можно сделать что-то вроде следующего:

struct test
{
   this
   {
      get { /*do something*/ }
      set { /*do something*/ }
   }
}

чтобы, если кто-то попытался это сделать,

test tt = new test();
string asd = tt; // intercept this and then return something else

Ответ 1

Концептуально то, что вы хотите сделать здесь, на самом деле возможно в .NET и С#, но вы лаяете неправильное дерево в отношении синтаксиса. Кажется, что неявный оператор преобразования будет здесь,

Пример:

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, но я думаю, что вы больше после неявных операторов.

Ответ 2

Вы можете определить неявный и явное преобразование операторы в и из вашего пользовательского типа.

public static implicit operator string(test value)
{
    return "something else";
}

Ответ 3

Расширяясь ответ MikeP, вы хотите что-то вроде:

public static implicit operator Test( string value )
{
    //custom conversion routine
}

или

public static explicit operator Test( string value )
{
    //custom conversion routine
}