如何添加扩展方法?

时间:2016-07-04 17:06:35

标签: c#

[Serializable]
[DataContract()]
public sealed class B: BaseB
{
    public B()
    {
        SourceContainerFolderName = string.Empty;
    }

    [DataMember(Name = "sourceContainer ")]
    public string SourceContainer { get; set; }

    [DataMember(Name = "sourceContainerFolderName ")]
    public string SourceContainerFolderName { get; set; }

    public A GetA()
    {
        return new A
        {
            ContainerName = SourceContainer,
            FolderName = SourceContainerFolderName,
        };
    }
}

请帮我在DataContract中创建一个扩展方法instedof方法 - GetA()。我想从我的类中删除此方法并使用扩展方法。怎么做?

2 个答案:

答案 0 :(得分:1)

我不确定我完全理解你的问题,但试试这个:

public static A GetA(this B baseB)
{
    return new A
    {
        ContainerName = baseB.SourceContainer,
        FolderName = baseB.SourceContainerFolderName,
    };
}

编辑后,此扩展方法将使用类型B的对象创建类型A的对象,您可以像这样使用它:

B b = new B();
A a = B.GetA(); // Here's is the use of the extension

答案 1 :(得分:0)

必须将static方法中的static class方法定义为具有特殊this T参数的public static class Extensions { public static A GetA(this B me) { if (me == null) throw new ArgumentNullException(); return new A { ContainerName = me.SourceContainer, FolderName = me.SourceContainerFolderName }; } } 作为第一个参数

.force("link", d3.forceLink().id(function(d) { return d.id; }).distance(200))

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/bb383977.aspx