相关疑难解决方法(0)

为什么扩展方法不适用于命名空间别名?

这可能是一个无知的问题,但我不确定为什么我不能一起使用命名空间别名和扩展方法.

以下示例工作得很好:

Program.cs中

using System;
using ExtensionMethodTest.Domain;

namespace ExtensionMethodTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var m = new Domain.MyClass();
            var result = m.UpperCaseName();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

MyClass.cs

using System;

namespace ExtensionMethodTest.Domain
{
    public class MyClass
    {
        public string Name { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

MyClassExtensions.cs

using System;

namespace ExtensionMethodTest.Domain
{
    public static class MyClassExtensions
    {
        public static string UpperCaseName (this MyClass myClass)
        {
            return myClass.Name.ToUpper();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在Program.cs中将域别名如下:

using Domain = ExtensionMethodTest.Domain;
Run Code Online (Sandbox Code Playgroud)

扩展方法不再有效..

当我处理将各种域对象转换为合同对象(假设我有4个域程序集和4个合同程序集)用于Web服务时,这可能会相当令人沮丧.使用别名将非常方便,因为我可以如下别名并继续使用各种扩展方法(如ToContract等): …

c# .net-3.5 visual-studio-2008

16
推荐指数
1
解决办法
4240
查看次数

标签 统计

.net-3.5 ×1

c# ×1

visual-studio-2008 ×1