不能隐式地将类类转换为另一个类C#

时间:2017-09-05 21:49:11

标签: c# asp.net object implicit-conversion

控制台应用程序:我有一个具有所有票证详细信息的对象,我试图通过webservice传递此对象。

基本上,我想将“VVV”(票证明细值列表)分配给“APTR”对象然后,我将“APTR”传递给该方法。

控制台应用程序:

            xmlStringResult = ss.GetAllTickets(APTR);

            Console.WriteLine(xmlStringResult); 
        }
        catch (Exception ex)
        {

            Console.WriteLine(ex.Message);
        }
       return xmlStringResult;           
    }
    //end 

我想将vvv类对象值分配给APTR,你能指导我吗?

group_vars

两者都是不同的名称空间,但是相同的类和属性..当我尝试编译时,我收到的错误就像

  

错误55无法隐式转换类型   'AutoProvisionWebAPIClient.AutoProvisionTicketsResponse'来   'AutoProvisionController.SRMUserRegServiceReference.AutoProvisionTicketsResponse'   \ ARMWebAPIClient \ AutoProvisionController \ SRMUserRegServiceProxy.cs 44 24 AutoProvisionController

2 个答案:

答案 0 :(得分:2)

如果它们是两个不同命名空间中的两个类,则它们基本上被视为两个不同的类,即使它们具有相同的属性和方法。

您应该使用通用命名空间来定义类,并使用它来代替。

修改

如果你必须使用两个不同的命名空间(虽然我不明白为什么),你可以单独将一个类对象的属性复制到另一个,这与另一个答案中建议的相同。< / p>

namespace NamespaceOne
{
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

namespace NamespaceTwo
{
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

namespace MainNamespace
{
    class Program
    {
        public static void Main()
        {
            NamespaceOne.Person p1 = new NamespaceOne.Person() { FirstName = "Zaphod", LastName = "Beeblebrox" };
            NamespaceTwo.Person p2 = new NamespaceTwo.Person() { FirstName = p1.FirstName, LastName = p1.LastName };

            Console.ReadLine();
        }
    }
}

同样,这是毫无意义的,我建议不要这样做。正确的方法是只有一个公共名称空间,您的类(在本例中为Person)驻留在该名称空间中,并在需要时使用它。像这样:

namespace CommonNamespace
{
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

namespace MainNamespace
{
    class Program
    {
        public static void Main()
        {
            CommonNamespace.Person p1 = new CommonNamespace.Person() { FirstName = "Zaphod", LastName = "Beeblebrox" };
            CommonNamespace.Person p2 = p1;

            Console.ReadLine();
        }
    }
}

答案 1 :(得分:0)

  

两者都是不同的名称空间,但具有相同的类和属性

这意味着两者都是完全不同的类别。

一种解决方案是在两种情况下都有一个类(可能在两个程序集中使用的另一个命名空间)。

另一种方法是创建一个翻译方法,通过检查参数的成员并分配给创建的对象,创建一个AutoProvisionWebAPIClient.AutoProvisionTicketsResponse并返回AutoProvisionController.SRMUserRegServiceReference.AutoProvisionTicketsResponse

可能这可能是在其中一个转换中定义的转换运算符,这将允许使用强制转换而不是方法调用。