Coders, I am trying to convert a XAML string to HTML using a library I found here , but I have a problem with creating a new instance of the object that would let me use the library. I already added a reference to the library in my Asp.net project and I would like to use it in a WCF file.
The problem is that whenever I try to instantiate a new object with the new keyword, I get an error that says:
'MarkupConverter' is a 'namespace' but is used like a 'type'.
Here is my code, notice that I am creating a new object just like the example shown in the library link above, please help:
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;
}
}
}
Confusion is arising because the actual type is
MarkupConverter.MarkupConverter
, the compiler seems to think yournew MarkupConverter
is an attempt to use a namespace as a type, rather than an attempt to instantiate a type inside yourusing
namespace.Simply change your problem line to:
..and you should be fine.
In your case, you have a namespace
MarkupConverter
and a class with the same name (MarkupConverter
again).In the line
markupConverter = new MarkupConverter(); /*PROBLEM IS HERE*/
the compiler is unable to tell that you intent to use the class. Since a namespace with the same name is present, the compiler picks it instead, because namespaces are linked with higher priority by the compiler.You can resolve this by using the complete name of the class:
An alternative way to providing the fully-qualified name of the class is to use an alias, which takes the form of
using {ALIAS} = {Fully qualified name of Type| Namespace}
. Note that the{ALIAS}
part can be any valid identifier.The alias you can place either in your usings:
or after the namespace declaration:
and you're good to go! At this point, if aliases are present, the line
will correctly pick the
MarkupConverter
class, because explicit aliasing has higher priority than the automatic binding done by the compiler.Can you show the
MarkupConverter
class you use please? The error is maybe in its declaration. In Where namespace is it? What is your file structure?Maybe you have created a
MarkupConverter
namespace?You should add a "using MarkupConverter" statement in the usings section. That will import all classes from that namespace.
That is pretty much self explanatory,
MarkupConverter
is a namespace ,so shouldn't be used as a class to create an object