Ian*_*n P 16 c# .net-3.5 visual-studio-2008
这可能是一个无知的问题,但我不确定为什么我不能一起使用命名空间别名和扩展方法.
以下示例工作得很好:
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等):
using BillingContracts = Namespace.Billing.Contracts;
using IssuingContracts = Namespace.Issuing.Contracts;
Run Code Online (Sandbox Code Playgroud)
等等...
我期待着答案......我确信这是直截了当的,但是,对于我的生活,我无法弄清楚为什么它不起作用.
谢谢!
m-y*_*m-y 11
确保仍然添加一个无别名的 using语句:
Program.cs中
using System;
using ExtensionMethodTest.Domain; //DON'T FORGET A NON-ALIASED USING
using MyDomain = ExtensionMethodTest.Domain;
namespace ExtensionMethodTest
{
class Program
{
static void Main(string[] args)
{
var m = new MyDomain.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)
归档时间: |
|
查看次数: |
4240 次 |
最近记录: |