c# - C# 中的泛型属性

标签 c# generics properties

<分区>

Possible Duplicate:
Making a generic property

我不太确定该怎么做,但我想做的是创建一种特殊类型的属性,它将在 getset< 中执行特定任务,并将在通用类型上定义。 例如,当这样写时:

MyProp<String> name;

将对字符串值执行预定义的getset

如何做到这一点?

谢谢!

最佳答案

你可以像这样创建一个泛型类:

public class MyProp<T>
{
    private T _value;

    public T Value
    {
        get
        {
            // insert desired logic here
            return _value;
        }
        set
        {
            // insert desired logic here
            _value = value;
        }
    }

    public static implicit operator T(MyProp<T> value)
    {
        return value.Value;
    }

    public static implicit operator MyProp<T>(T value)
    {
        return new MyProp<T> { Value = value };
    }
}

...然后像这样在类中使用它:

class SomeClass
{
    public MyProp<int> SomeProperty { get; set; }
}

隐式运算符意味着您不需要显式设置或获取 MyPropValue 属性,而是可以编写代码以更“自然”的方式访问该值"方式:

SomeClass instance = new SomeClass();
instance.SomeProperty = 32;
int someInt = instance.SomeProperty;

关于c# - C# 中的泛型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2587236/

相关文章:

Scala 类型 : How to Restrict the Generic Type of a Subclass?

c# - List.OfType<> 的性能影响是什么,其中整个列表都是该类型?

java - 将 Action 属性传递给 JavaScript 函数

javascript 对象属性未定义,但它存在

c# - 以编程方式检查 Http 命名空间保留

c# - 将转换转换为 RectTransform

c# - 如何将自定义流程模板添加到 TFS 2013?

c# - 使用 C# 的 Excel/VSTO 中的列号到列字母

c# - List<T> - 我传递的是对象还是引用?

javascript - 如何有效地计算 JavaScript 中对象的键/属性的数量