Есть ли способ в C# для создания обертки класса, которая функционирует как свойство при использовании?C#

Место общения программистов C#
Ответить
Anonymous
 Есть ли способ в C# для создания обертки класса, которая функционирует как свойство при использовании?

Сообщение Anonymous »

Я хочу создать обертку C#, которая по своей природе рассматривается как свойство C#. Вы можете частично сделать это так: ((массово упрощенный пример кода) < /p>

Код: Выделить всё

public class MyClass
{
public T value;
public T Get() { return value; }
public void Set(T value) { this.value = value; }
}
public struct AsProperty
{
MyClass instance;
public T property { get { return instance.Get(); } set { instance.Set(value); } }
public static implicit operator T(AsProperty wrapper) { return wrapper.property; }
public AsProperty(MyClass instance) { this.instance = instance; }
}
Оператор неявного преобразования работает в большинстве сценариев, где называется GET , но он не будет работать для заданий. Назначения, по -видимому, требуют использования внутреннего свойства для установки, а не обертки. Я знаю, что в C# оператор назначения не подходит для перегрузки, и методы, которые я нашел в Интернете, не работают в моем случае. Наиболее распространенный метод включает создание конструктора и перегрузки +, -и т. Д. Для правильной обработки операторов +=, -= назначения. Проблема, с которой я сталкиваюсь, заключается в том, что моя обертка содержит класс, а не простые данные типа значения. Так что это не работает. < /P>

Код: Выделить всё

public static implicit operator AsProperty(T value)
{
// Will not work in my case -> MyClass needs to be properly initialized
// with a lot of specific data for the code to function correctly
AsProperty wrapper = new AsProperty(null);
wrapper.property = value; // error
return wrapper;
}
То, что я ищу, - это общий способ всегда относиться к обертке свойства, как если бы это было основное свойство, а не писать var.property каждый раз. Есть ли способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/796 ... a-property
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»