使用辅助方法创建“this”的实例

时间:2014-01-21 19:54:36

标签: c# helper

我有这个代码;

public static void SetMyClass (this myClass data, ListControl crl) 
{
    var value = crl.SelectedValue.ToNullableInt();

    if (value.HasValue)
    {
        data = new myClass () { Id = value.Value };
    }
}

此代码不会通过新代码更改原始实例。

可以这样做吗?

3 个答案:

答案 0 :(得分:1)

public static void SetMyClass (ref myClass data, ListControl crl) 
{
    var value = crl.SelectedValue.ToNullableInt();

    if (value.HasValue)
    {
        data = new myClass () { Id = value.Value };
    }
}

您松开了扩展方法但获得了改变方法内部参考的能力。

无法使用扩展方法。

答案 1 :(得分:0)

无法完成,因为您需要通过引用传递参数而不是需要使用ref关键字的值...并且扩展方法不支持ref作为第一个参数(实例)参数)。

为什么不将data属性设置为值?

答案 2 :(得分:0)

保留助手我将改用

public static T GetMyClass<T>(this ListControl data) where T : myClass, new()
{
    var value = data.SelectedValue.ToNullableInt();

    if (value.HasValue)
    {

        return new T() { Id = value.Value };
    }

    return null;
}