Eya*_*yad 15 .net c# compiler-errors
编码器,我试图使用我在这里找到的库将XAML字符串转换为HTML ,但我在创建一个允许我使用该库的对象的新实例时遇到问题.我已经在我的Asp.net项目中添加了对库的引用,我想在WCF文件中使用它.
问题是,每当我尝试使用new关键字实例化一个新对象时,我会收到一条错误消息:
'MarkupConverter'是'命名空间',但用作'类型'.
这是我的代码,请注意我正在创建一个新对象,就像上面库链接中显示的示例一样,请帮助:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Web.Services;
using System.Net.Mail;
using System.ServiceModel.Activation;
using System.Data.SqlClient;
using MarkupConverter;
namespace AspPersonalWebsite
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 //: IService1
{
private string connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
private IMarkupConverter markupConverter;
[OperationContract]
public string convertXAMLToHTML(string XAMLtext)
{
string htmlText = "";
markupConverter = new MarkupConverter(); /*PROBLEM IS HERE*/
htmlText = markupConverter.ConvertXamlToHtml(XAMLtext);
return htmlText;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Car*_*000 22
由于实际类型是混淆MarkupConverter.MarkupConverter,编译器似乎认为您new MarkupConverter试图将命名空间用作类型,而不是尝试在using命名空间内实例化类型.
只需将问题行更改为:
markupConverter = new MarkupConverter.MarkupConverter(); /*SOLUTION HERE!*/
Run Code Online (Sandbox Code Playgroud)
..你应该没事.
在您的情况下,您有一个名称空间MarkupConverter和一个具有相同名称的类(MarkupConverter再次).
在该行中markupConverter = new MarkupConverter(); /*PROBLEM IS HERE*/,编译器无法告诉您打算使用该类.由于存在具有相同名称的名称空间,因此编译器会选择它,因为编译器会将名称空间链接到更高的优先级.
您可以使用类的完整名称来解决此问题:
// supposedly MarkupConverter is the namespace of the MarkupConverter class
markupConverter = new MarkupConverter.MarkupConverter();
Run Code Online (Sandbox Code Playgroud)
提供类的完全限定名称的另一种方法是使用别名,其形式为using {ALIAS} = {Fully qualified name of Type| Namespace}.请注意,该{ALIAS}部分可以是任何有效的标识符.
您可以将其放置在使用中的别名:
using System.Net.Mail;
using System.ServiceModel.Activation;
using System.Data.SqlClient;
using MarkupConverter;
using MarkupConverter = MarkupConverter.MarkupConverter; // this is aliasing
Run Code Online (Sandbox Code Playgroud)
或在命名空间声明之后:
using System.Data.SqlClient;
using MarkupConverter;
namespace AspPersonalWebsite
{
using MarkupConverter = MarkupConverter.MarkupConverter;
....
Run Code Online (Sandbox Code Playgroud)
你很高兴去!此时,如果存在别名,则为该行
markupConverter = new MarkupConverter()
Run Code Online (Sandbox Code Playgroud)
将正确选择MarkupConverter类,因为显式别名的优先级高于编译器自动绑定的优先级.
| 归档时间: |
|
| 查看次数: |
55172 次 |
| 最近记录: |