Code Bye

泛型类不能正确的把源类型映射成目标类型

using UnityEngine;
using System.Collections;
public class SingletonBase<T>  where T:SingletonBase<T>
{
    private static T _instance;
    public static T Instacne
    {
        get {
            if (_instance == null)
            {
                _instance = (T)new SingletonBase<T>();     
            }
            return _instance;
        } 
    }
    protected SingletonBase()
    {
       _instance = (T)this;
    }
    
}
继承了这个类的子类中调用Instance时,执行到_instance=(T)this时,就会出错,说不能正确的把源类型映射成目标类型,不知道为什么会出这样的错误

 

20分
父类不能强制转成子类类型
好比int继承自object
int i=1;
object o=(object)i;
这样完全没有问题.
object o=new object();
int i=(int)o;
你觉得有可能转换成功吗?

20分
楼主是要写一个泛型的单例模式吧。
public class SingletonBase<T>  where T:SingletonBase<T> 这个地方写的不对,where后面要改一下。
楼主参考一下这个吧:
http://blog.csdn.net/mygisforum/article/details/6892915
父类不能强制转成子类,知道自己问了个多么傻的问题,面壁中
不知道这个子类是如何写的, 感觉有点死循环了.
哪儿会死循环呢
public class SubClass:SingletonBase<SubClass>
 {
   
 }
子类就这样写就可以实现单例模式了,彼会死循环呢
把父类实例化一个新对象再转换,我怎么看你的代码这么别扭呢

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明泛型类不能正确的把源类型映射成目标类型