rac*_*mos 30 c# generics properties
可能重复:
制作通用属性
我不太确定如何做到这一点,但我想要做的是创建一个特殊类型的属性,它将在get和执行特定任务set,并将在泛型类型上定义.例如,写这篇文章时:
MyProp<String> name;
Run Code Online (Sandbox Code Playgroud)
预定义get并将set对字符串值执行.
怎么办?
谢谢!
Fre*_*örk 80
你可以创建一个这样的泛型类:
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 };
}
}
Run Code Online (Sandbox Code Playgroud)
...然后在类这样的类中使用它:
class SomeClass
{
public MyProp<int> SomeProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
隐式运算符意味着您不需要显式设置或获取Value属性MyProp,但可以编写代码以更"自然"的方式访问值:
SomeClass instance = new SomeClass();
instance.SomeProperty = 32;
int someInt = instance.SomeProperty;
Run Code Online (Sandbox Code Playgroud)
您不能以这种方式“更改”属性语法。你可以做的是:
class Foo
{
string MyProperty { get; set; } // auto-property with inaccessible backing field
}
Run Code Online (Sandbox Code Playgroud)
通用版本如下所示:
class Foo<T>
{
T MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100292 次 |
| 最近记录: |